簡體   English   中英

使用 PARTITION 返回 ROW_NUMBER()

[英]Returning the ROW_NUMBER() with PARTITION

我正在使用 C# 和 SQL。

我想添加自動插入值取決於當天插入列“名稱”數據的次數。每天每個人可能有多個數據插入。 每個名稱的日常數據插入可能會有所不同。 例子。 瑪麗亞那天有 3 個插入,因此“Column2”顯示 1 ,2 ,3。

預期輸出。 在此處輸入圖片說明

這里的關鍵標識符是 name 。

C# 和 SQL 方法確實如此。 感謝您的支持。

按鈕點擊代碼。

protected void button1_Click_1(object sender, EventArgs e)
{

    SqlConnection con = new SqlConnection();
    con.ConnectionString = ("Data Source=APC;Initial Catalog=d;Integrated Security=True");
    con.Open();
    GETDATE())"; 
    String st = "INSERT INTO t4 (twenty,ten,five,one,five_hundred_fils,five_hundred_fils2,sar,hundred_fils,fifty_fils,twenty_five_fils,ten_fils, five_fils,time,total,name) values (@twenty, @ten, @five, @one, @five_hundred_fils,@five_hundred_fils2,@sar, @hundred_fils,@fifty_fils, @twenty_five_fils, @ten_fils,@five_fils, GETDATE(),@total,@name)";
      SqlCommand cmd = new SqlCommand(st, con);
    cmd.Parameters.AddWithValue("@twenty", label18.Text);
    cmd.Parameters.AddWithValue("@ten", label6.Text);
    cmd.Parameters.AddWithValue("@five", label5.Text);
    cmd.Parameters.AddWithValue("@one", label4.Text);
    cmd.Parameters.AddWithValue("@five_hundred_fils", label10.Text);
    cmd.Parameters.AddWithValue("@five_hundred_fils2", label25.Text);
    cmd.Parameters.AddWithValue("@hundred_fils", label19.Text);
    cmd.Parameters.AddWithValue("@fifty_fils", label20.Text);
    cmd.Parameters.AddWithValue("@twenty_five_fils", label21.Text);
    cmd.Parameters.AddWithValue("@ten_fils", label22.Text);
    cmd.Parameters.AddWithValue("@five_fils", label23.Text);
    cmd.Parameters.AddWithValue("@total", label8.Text);
    cmd.Parameters.AddWithValue("@name", textBox13.Text);
    cmd.Parameters.AddWithValue("@sar", label27.Text);
    cmd.ExecuteNonQuery();
        con.Close();

}

 My sql for display SELECT id, twenty, ten, five, one, five_hundred_fils, hundred_fils, fifty_fils, twenty_five_fils, ten_fils, five_fils, time, total, name FROM dbo.t4

我建議以不同的方式處理它。 添加日期列並用插入日期填充它。 任何時候您想知道按天計算的次數,請使用對 GROUP BY [name] 和 [date] 的查詢並執行 count()。 這樣,如果您願意,稍后您可以按周、月甚至小時進行計數。

SELECT COUNT(Column1) AS CountPerDay, Name, CAST(time as Date)
FROM     t4
GROUP BY Name, CAST(time as Date)

 SELECT * FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY name ORDER BY name DESC) AS StRank, * FROM [d].[dbo].[t4]) n

在此處輸入圖片說明 我以不同的方式嘗試並得到了結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM