繁体   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