使用PARTITION返回ROW_NUMBER()

问题描述 投票:-2回答:2

我正在使用C#和SQL。

我想添加自动插入值取决于当天插入列“名称”数据的次数。每个人可能有多个数据插入。每个名称的日常数据插入可能会有所不同。例。人玛丽亚当天有3个插入因此“Column2”显示1,2,3。

预期产出。 enter image description here

这里的密钥标识符是名称。

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
c# sql .net sql-server windows-forms-designer
2个回答
2
投票

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

enter image description hereI尝试了不同的方式并得到了结果。


1
投票

我建议采取不同的方式。添加日期列并使用插入日期填充它。每当您想要知道白天计数时,请使用GROUP BY [name]和[date]的查询并执行count()。如果你愿意的话,那么你可以在一周,一个月甚至一小时的时间内获得计数。

SELECT COUNT(Column1) AS CountPerDay, Name, CAST(time as Date)
FROM     t4
GROUP BY Name, CAST(time as Date)
© www.soinside.com 2019 - 2024. All rights reserved.