每当我尝试对来自同一列的数据使用case语句时,我总是会遇到null值问题。 数据库中的数据:
Month Sum
Jan 1000
Feb 2000
Mar 3000
期望的结果:
Jan Feb Mar
1000 2000 3000
当我尝试使用case语句时,我遇到了null问题,并得到如下结果:
Jan Feb Mar
1000 Null Null
Null 2000 Null
Null Null 3000
以下是创建空值问题的代码。
select AccountID,
sum(Case when DATEPART(month,EndDateTime) = 10 then Budget End) period1,
sum(case when DATEPART(month,EndDateTime) = 11 then Budget end) period2,
sum(case when DATEPART(month,EndDateTime) = 12 then Budget End) period3,
Description,
from Budget
where DATEPART(month,EndDateTime) in ('10','11','12')
group by AccountID,Description,EndDateTime
order by AccountID,Description,EndDateTime;
使用Pivot功能,我能够生成所需的结果。
SELECT
AccountID,
[1] AS Jan,
[2] AS Feb,
[3] AS Mar,
[4] AS Apr,
[5] AS May,
[6] AS Jun,
[7] AS Jul,
[8] AS Aug,
[9] AS Sep,
[10] AS Oct,
[11] AS Nov,
[12] AS Dec
FROM
(Select
AccountID,
Budget,
MONTH(EndDateTime) as TMonth
from
dbo.Budget) source
PIVOT
(
SUM(Budget)
FOR TMonth
IN ( [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12] )
) AS pvtMonth
我现在面临的当前问题是我需要再添加一个sum函数Sum(BudgetNet)。有什么建议? 感谢。