【发布时间】:2016-03-03 23:38:37
【问题描述】:
我正在努力寻找使用row_number 和partition by 的解决方案。
我的表格是这样的(*这是我唯一的一列*)
我的脚本是这样的:
SELECT
[P_ID],
[DATE],
ROW_NUMBER() OVER (PARTITION BY P_ID,[DATE] ORDER BY P_ID,[DATE] ) AS ROW
FROM #TEMP
我想按 DATE 分组,第一行应该说 1,第二行也应该说 1,但第三行应该说 2,因为日期(顺序)是 15,然后是 16,如果有 17,那么行会说3 但如果有一个新行显示 2015-09-21 那么它将返回到第 1 行,依此类推....
这可以通过分区来实现吗?
【问题讨论】:
-
一般而言,如果
PARTITION BY和ORDER BY中的列相同,则说明您做错了。 -
我本来是要讽刺的,但后来我意识到所有的答案都是很好的答案,所以谢谢你:)
-
请忽略,错误,对不起
-
您在图像中显示 3 个不同的日期,因此这三行中的每一行都会得到 1 个(图像和文本在细节上没有对齐)。
-
您想要遍历多行并检查差异并为行列赋值 - 您需要一个存储过程。
标签: sql sql-server date sql-server-2012 window-functions