简体   繁体   English

使用 PARTITION 返回 ROW_NUMBER()

[英]Returning the ROW_NUMBER() with PARTITION

I am using C# and SQL.我正在使用 C# 和 SQL。

I would like to add auto insert value depends upon the number of times column"name" data inserted on the day.Each day each person might have multiple data insert.我想添加自动插入值取决于当天插入列“名称”数据的次数。每天每个人可能有多个数据插入。 Everyday data insert per name might be vary.每个名称的日常数据插入可能会有所不同。 Example.例子。 person maria has 3 insert on that day therefore "Column2" shows 1 ,2 ,3.玛丽亚那天有 3 个插入,因此“Column2”显示 1 ,2 ,3。

Expected output.预期输出。 在此处输入图片说明

Here key identifier is name .这里的关键标识符是 name 。

C# and SQL method does. C# 和 SQL 方法确实如此。 appreciate your support.感谢您的支持。

button click code.按钮点击代码。

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

I would suggest going about it differently.我建议以不同的方式处理它。 Add a date column and populate it with the date of the insert.添加日期列并用插入日期填充它。 Any time you want to know a count by day use a query to GROUP BY [name] and [date] and do a count().任何时候您想知道按天计算的次数,请使用对 GROUP BY [name] 和 [date] 的查询并执行 count()。 That way later on you could get a count by week, month or even hour, if you'd like.这样,如果您愿意,稍后您可以按周、月甚至小时进行计数。

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

在此处输入图片说明 I tried in different way and got the results.我以不同的方式尝试并得到了结果。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM