使用sql server我想创建一个包含空列的数据透视表。我试过了:
SELECT account_no, SUM([500]) AS [500], SUM([NULL]) AS [the_null_col]
FROM (SELECT * FROM source_table) AS x
PIVOT (SUM(amount) FOR amount_debit IN ([500], [NULL])) AS y
GROUP BY account_no
但我只得到:PIVOT运算符中提供了错误的值“NULL”。
我想使用pivot操作符,而不是使用其他方法来创建数据透视表。我发现this,但不幸的是,第一个答案并不十分详细。
答案 0 :(得分:4)
链接中第一个答案中的建议是用非空哨兵值代替NULL
,并在PIVOT
中使用该值。
SELECT account_no,
[500],
[-1] AS [Null]
FROM (SELECT amount,
ISNULL(amount_debit, -1) AS amount_debit,
account_no
FROM source_table) AS x
PIVOT (SUM(amount) FOR amount_debit IN ([500], [-1])) AS y
如果您没有选择可以永远不会出现在数据中的值,这似乎有点破解并且很容易破解。
我在不使用PIVOT
关键字的情况下执行此操作,然后检查IS NULL
是微不足道的。
SELECT account_no,
SUM(CASE
WHEN amount_debit = 500 THEN amount
END) AS [500],
SUM(CASE
WHEN amount_debit IS NULL THEN amount
END) AS [NULL]
FROM source_table
GROUP BY account_no