2

使用 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”。

我想使用数据透视运算符,而没有其他方法可以创建数据透视表。我发现了这一点,但不幸的是,第一个答案不是很详细。

4

1 回答 1

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 

如果您不选择一个永远不会出现在数据中的值,这似乎有点 hack 并且很容易被破坏。

我会在不使用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 
于 2013-05-22T10:12:47.810 回答