【发布时间】:2019-03-25 06:38:16
【问题描述】:
我在 SQL Server 中有下表;
DesiredRowNo. Customer Date NID SID Contacts AG
1 AAA 04/09/2018 15357989260016600 100743 1 1
1 AAA 04/09/2018 15358110980018300 100743 1 1
1 AAA 04/09/2018 15358197620012800 100743 1 1
2 AAA 21/09/2018 15358902310016400 100743 1 1
2 AAA 21/09/2018 15358999300015200 100743 1 1
3 AAA 29/09/2018 15359624190012200 100743 1 1
3 AAA 29/09/2018 15359896100010500 100702 1 1
4 AAA 30/09/2018 15360551640011900 100743 1 1
1 BBB 05/09/2018 15357989260016600 100743 1 1
1 BBB 05/09/2018 15358110980018300 100743 1 1
2 BBB 08/09/2018 15358197620012800 100743 1 1
3 BBB 15/09/2018 15358902310016400 100743 1 1
3 BBB 15/09/2018 15358999300015200 100743 1 1
4 BBB 19/09/2018 15359624190012200 100743 1 1
5 BBB 24/09/2018 15359896100010500 100702 1 1
5 BBB 24/09/2018 15360551640011900 100743 1 1
我需要第一列 (DesiredRowNo.) 根据客户和日期显示排名/行号。因此对于客户 AAA,所有 相同日期的行排名为 1,然后 下一个唯一日期排名为 2,以此类推。 (必须按日期顺序排列)
请参阅上面的 DesiredRowNo. 值,以更好地解释我想要实现的目标。
我试过了;
ROW_NUMER() over (partition by Customer, date order by date)
但这似乎没有按要求给出正确的顺序。
有什么想法吗?
【问题讨论】:
-
如果您按日期分区并按日期排序,除了随机之外,您期望的顺序是什么(如果要求您按顺序放置 3 个日期,并且它们都是相同的日期,您知道哪个是没有更多细节的“正确”顺序)?您需要按不同的列排序。
标签: sql-server function sequence partition row-number