2

SQL Server を使用して、null 列を含むピボット テーブルを作成したいと考えています。私は試した:

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 以外のセンチネル値を代わりに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 
于 2013-05-22T10:12:47.810 に答える