私に似たデータを生成する次のコードがあります。ここに投稿すると(PivotWithoutAggregateFunction)、PIVOTではなくCASE文を使用する方が非数値の方が良いことが示唆されました。これが真実でないなら、私は今それを修正する時だと思います!CASEクエリの結果からNULLを置換する
DECLARE @QA1 TABLE (SID varchar(7), FormID varchar(max), DateExam date, Present varchar(3))
INSERT INTO @QA1 VALUES(1, 'Form1', '20110101', 'Yes')
INSERT INTO @QA1 VALUES(2, 'Form1', '20110201', 'Yes')
INSERT INTO @QA1 VALUES(3, 'Form1', '20110301', 'Yes')
INSERT INTO @QA1 VALUES(4, 'Form1', '20110401', 'Yes')
INSERT INTO @QA1 VALUES(5, 'Form1', '20110122', 'Yes')
INSERT INTO @QA1 VALUES(1, 'Form2', '20110222', 'Yes')
INSERT INTO @QA1 VALUES(2, 'Form2', '20110322', 'Yes')
INSERT INTO @QA1 VALUES(3, 'Form2', '20110422', 'Yes')
INSERT INTO @QA1 VALUES(1, 'Form3', '20110128', 'Yes')
INSERT INTO @QA1 VALUES(1, 'Form4', '20110228', 'Yes')
INSERT INTO @QA1 VALUES(5, 'Form5', '20110328', 'Yes')
INSERT INTO @QA1 VALUES(5, 'Form6', '20111228', 'Yes')
INSERT INTO @QA1 VALUES(4, 'Form2', '20111228', 'Yes')
SELECT SID,
MIN(CASE FormID WHEN 'Form1' THEN Present END) AS 'First',
MIN(CASE FormID WHEN 'Form2' THEN Present END) AS 'Second',
MIN(CASE FormID WHEN 'Form3' THEN Present END) AS 'Third',
MIN(CASE FormID WHEN 'Form4' THEN Present END) AS 'Fourth',
MIN(CASE FormID WHEN 'Form5' THEN Present END) AS 'Fifth',
MIN(CASE FormID WHEN 'Form6' THEN Present END) AS 'Sixth'
FROM @QA1
GROUP BY SID
ORDER BY SID
しかし、出力は、行/列にはNULLがありますが、正しい形式は読みにくいです。
SID First Second Third Fourth Fifth Sixth
1 Yes Yes Yes Yes NULL NULL
2 Yes Yes NULL NULL NULL NULL
3 Yes Yes NULL NULL NULL NULL
4 Yes Yes NULL NULL NULL NULL
5 Yes NULL NULL NULL Yes Yes
私は何を取得(すなわち「」)、または少なくとも「いいえ」のどちらかので、どのように私は私の場合を変更することができますか?
それでした!私は知らなかったThanks COLLESCE – user918967
@ user918967:誰もがCOALESCEについて知っておく必要があります。それは素晴らしい便利なバリデーショナルな機能です(必要な数の引数で呼び出すことができます)。あなたは ''いいえ ''が気に入らなければ '' 'を使うことができます。 –