鉴于我有下表:
+--------+------------+------+--------+
| Amount | Date | Type | UserId |
+--------+------------+------+--------+
| 8 | 2018-08-10 | VL | 11 |
| 8 | 2018-08-11 | VL | 11 |
| 8 | 2018-08-12 | VL | 11 |
| 4 | 2018-08-09 | EL | 9 |
| 8 | 2018-08-10 | SL | 9 |
+--------+------------+------+--------+
如何格式化结果集以获得相同类型的金额之和?
以及所有过去记录(日期>当前日期)的总和。
像这样的:
+------+---------------------+----------------+
| Type | TotalScheduledLeave | TotalLeaveUsed |
+------+---------------------+----------------+
| VL | 24 | 0 |
| VL | 24 | 0 |
| VL | 24 | 0 |
| EL | 12 | 4 |
| SL | 12 | 4 |
+------+---------------------+----------------+
我尝试了以下代码:
SELECT Type
,SUM(Amount) as 'TotalScheduledLeave'
,CASE WHEN Date > GETUTCDATE()
THEN SUM(Amount)
ELSE 0
END as 'TotalLeaveUsed'
FROM TimeOffTable
WHERE User = @UserId
GROUP BY Type
这将引发错误,因为选择列表中的日期不包含在聚合函数或group子句中。但是当我试着将日期分组时,我得到的值是错误的
'TotalScheduledLave'