【发布时间】:2020-05-01 12:13:13
【问题描述】:
我有一个包含 CaseId、UserId、打开日期、关闭日期等值的案例记录的表。
对于报告,我需要有一个结果表,其中包含所有用户的连续月份,其中仍打开的案例数量和已关闭案例的数量。
CaseID | UserID | Opened On | Closed Date| Value
1 U1 04/01/2020 05/02/2020 500
2 U1 08/01/2020 null 120
3 U3 16/01/2020 null 350
4 U2 21/01/2020 25/01/2020 100
5 U1 25/01/2020 08/04/2020 150
6 U2 05/02/2020 null 790
7 U4 14/02/2020 18/03/2020 190
8 U4 19/02/2020 null 490
9 U1 21/02/2020 27/02/2020 140
10 U2 07/03/2020 17/03/2020 640
11 U1 17/03/2020 12/05/2020 420
12 U3 22/03/2020 null 810
13 U2 05/04/2020 19/05/2020 320
14 U1 18/04/2020 null 180
15 U4 16/05/2020 22/05/2020 210
16 U3 19/05/2020 null 230
所需的输出(*括号中的值仅用于帮助)
UserID | Month | Nb case still opened | Total Open | Nb closed case | Total Value closed
U1 01 3 (1 ;2 ;5)* 770 0 0
U1 02 2 (2 ;5) 270 2 (1;9) 640
U1 03 3 (2;5;11) 690 0 0
U1 04 3 (2;11;14) 720 1 (5) 150
U1 05 2 (2 ;14) 300 1 (11) 420
U2 01 0 0 1 100
U2 02 1 (6) 790 0 0
U2 03 1 (6) 790 1 640
U2 04 2 (6 ;13) 1100 0 0
U2 05 1 (6) 790 1 (13) 320
U3 01 1 (3) 350 0 0
U3 02 1 (3) 350 0 0
U3 03 2 (6 ;12) 1160 0 0
U3 04 2 (6 ;12) 1160 0 0
U3 05 3 (6 ;12 ;16) 1390 0 0
U4 01 0 0 0 0
U4 02 1 (7 ;8) 680 0 0
U4 03 2 (8) 490 1 190
U4 04 1 (8) 490 0 0
U4 05 1 (8) 490 1 210
我尝试使用 CROSS JOIN, OVER (PARTITION) 但我没有找到解决方案。 谢谢你的帮助。
【问题讨论】:
-
当您的表包含超过 12 个月的数据时会发生什么?现在想想,现在就计划!
标签: sql sql-server tsql date group-by