【发布时间】:2019-03-18 01:26:30
【问题描述】:
我有一个查询,它计算 3 个总和,然后将其分类为后期付款范围。
但有时某些范围没有数据,因此查询返回的行数少于 3 行。
即使没有特定 DaysLate 范围的数据,如何强制查询始终返回 3 行?在这种情况下,Suma 和 Docs 应包含零。
SELECT MIN(b.Range) Nazwa, SUM(b.Remaining) Suma, COUNT(*) Docs
FROM (
SELECT
CASE
WHEN a.DaysLate BETWEEN 1 AND 14 THEN 'Late 1 to 14 days'
WHEN a.DaysLate BETWEEN 15 AND 30 THEN 'Late 15 to 30 day'
ELSE 'Late over 30 days'
END AS Range,
CASE
WHEN a.DaysLate BETWEEN 1 AND 14 THEN 1
WHEN a.DaysLate BETWEEN 15 AND 30 THEN 2
ELSE 3
END AS Order,
Remaining, DaysLate
FROM (
SELECT DATEDIFF(dd, PaymentDate, GETDATE()) DaysLate, (WN - MA) Remaining
FROM dbo.MyData
WHERE DATEDIFF(dd, PaymentDate, GETDATE()) > 0 AND KOD_ID = @KOD_ID
) a
) b
GROUP BY b.Order
ORDER BY b.Order ASC
【问题讨论】: