假设我有这样的数据
| 客户ID|事务处理日期(_D)|
| - -|- -|
| 第001号|2022年9月1日|
| 第001号|2022年9月4日|
| 第001号|二十二年九月十四日|
| 二号|2022年9月3日|
| 二号|2022年9月1日|
| 二号|二十二年九月十八日|
| 二号|二十二年九月二十日|
| C 003号|2022年9月2日|
| C 003号|二十二年九月二十八日|
| C 004色|2022年9月8日|
| C 004色|二十二年九月十八日|
但是我无法找到基于Trans_date的第一个和第二个事务。我希望结果如下所示:
| 客户ID|跨周(_W)|第一个|第二个|
| - -|- -|- -|- -|
| 第001号|三十五个|三十五个|三十七人|
| 第001号|三十五个|三十五个|三十七人|
| 第001号|三十七人|三十五个|三十七人|
| 二号|三十五个|三十五个|三十七人|
| 二号|三十五个|三十五个|三十七人|
| 二号|三十七人|三十五个|三十七人|
| 二号|三十八|三十五个|三十七人|
| C 003号|三十五个|三十五个|三十九|
| C 003号|三十九|三十五个|三十九|
| C 004色|三十六人|三十六人|三十七人|
| C 004色|三十七人|三十六人|三十七人|
而对于最后的结果会这样显示:
| 客户ID|第一个|第二个|
| - -|- -|- -|
| 第001号|三十五个|三十七人|
| 二号|三十五个|三十七人|
| C 003号|三十五个|三十九|
C 004不包括在内,因为我需要谁的客户ID谁在他们的第一周先来。
2条答案
按热度按时间xfyts7mz1#
您可以在子查询中使用
ROW_NUMBER()
函数来获取客户的第一个和第二个交易日期,然后对该子查询的结果使用条件MAX
窗口函数。请参阅SQL Server上的demo。
根据您在注解中的请求,如果您希望为每个客户仅选择一行来显示第一周和第二周,请使用以下查询:
请参见demo。
vuktfyat2#
输出量:
例二:
FIddle Demo
编辑:这可以用更简单的方法和更简单的方法来完成。