0

主に値の列で構成される結果セットがあります。ただし、一番左の列には、各行に効果的にラベルを付けるために使用しているテキストが含まれています。ROLLUP すると、値が合計されます。これは素晴らしいことです。私の「No KS2」列のテキストは、予期される NULL にロールアップされます。NULL を「Total」などのテキストに置き換えるためにできることはありますか?

他の列の NULL はすべて存在するはずであり、それらを置き換える必要はありません。

これが私の結果セットの例です。

No KS2    6c/D-    6b/D     6a/D+
2a        1        NULL     NULL     
3c        3        NULL     NULL     
3b        NULL     5        NULL
3a        NULL     NULL     6
NULL      4        5        6

これが私がやりたいことです:

No KS2    6c/D-    6b/D     6a/D+
2a        1        NULL     NULL     
3c        3        NULL     NULL     
3b        NULL     5        NULL
3a        NULL     NULL     6
Total     4        5        6

編集:

group by を使用して KS2 列の結果セットを生成するとき、既に NULL 値を「No KS2」に置き換えています。以下の GROUP BY コードを参照してください。

GROUP BY
       CASE Name
            WHEN 'English' THEN
                CASE WHEN [Ks2en] IS NULL OR [Ks2en]='' THEN
                    'No KS2'
                WHEN [Ks2en] IN ('1a','1b','1c') THEN 
                    '1'
                ELSE
                    [Ks2en]
                END
            WHEN 'Mathematics' THEN
                CASE WHEN [Ks2ma] IS NULL OR [Ks2ma]='' THEN
                    'No KS2'
                WHEN [Ks2ma] IN ('1a','1b','1c') THEN 
                    '1'
                ELSE
                    [Ks2ma]
                END
            ELSE
                CASE WHEN [Ks2av] IS NULL OR [Ks2av]='' THEN
                    'No KS2'
                WHEN [Ks2av] IN ('1a','1b','1c') THEN 
                    '1'
                ELSE
                    [Ks2av]
                END
            END 
            WITH ROLLUP

編集:これは重複ではないと思われる質問に対する解決策が私の問題を解決しないため、これは重複ではありません。違いを説明するためにコードを編集しました。KS2 列の NULL 値を「No KS2」に置き換えるケース ステートメントが既にあります。

4

1 に答える 1

0

結局のところ、それは簡単でした。COALESCE() の調査に関するコメントを投稿し、それを削除したユーザーは、正しい方向に私を送ってくれました。列の case ステートメントを関数でラップすると、結果セットが希望どおりに表示されます。だから、あなたが誰であろうと、ありがとう。

SELECT 
       COALESCE(CASE Name
            WHEN 'English' THEN
                CASE WHEN                   
                [Ks2en] IS NULL OR [Ks2en]='' THEN
                    'No KS2'
                WHEN [Ks2en] IN ('1a','1b','1c') THEN
                    '1'
                ELSE
                    [Ks2en]
                END
            WHEN 'Mathematics' THEN
                CASE WHEN [Ks2ma] IS NULL OR [Ks2ma]='' THEN
                    'No KS2'
                WHEN [Ks2ma] IN ('1a','1b','1c') THEN
                    '1'
                ELSE
                    [Ks2ma]
                END
            ELSE
                CASE WHEN [Ks2av] IS NULL OR [Ks2av]='' THEN
                    'No KS2'
                WHEN [Ks2av] IN ('1a','1b','1c') THEN
                    '1'
                ELSE
                    [Ks2av]
                END
            END,'Total') AS KS2,...
于 2013-10-10T10:33:39.080 に答える