2017-11-10 4 views
0

私はこのような終了複雑なクエリを有する:ピボット列を1列にまとめてフォーマットSQLを変更しますか?

PIVOT 
(
    MAX([Name]) 
    FOR [Name] In([Category1], [Category2], [Category3]) 
) As pt 

ピボット機能は、単一の行に複数の行のデータを合成します。これらのフィールドのいくつかはヌルで、カテゴリフラグを持つものがあります。これらの列のいずれかに値がある場合はtrueの1つの列を出力し、すべての値がNULLの場合はfalseを出力するにはどうすればよいですか?値はtextまたはnullです。 Extraでは、出力の列を非表示または非表示にするにはどうすればよいですか?私はMSSQLのSQL互換の答えを探しています。

答えて

1

あなたは、あなたにも任意の列にISNULL()またはCOALESCE()を使用する場所、この同じselect句があるピボット

SELECT 
id, [Category1], [Category2], [Category3] 
, case when [Category1] is null and [Category2] is null and [Category3] is null 
     then 'False' 
     else 'True' 
    end your_ol_name 
FROM yourtable 
PIVOT 
(
    MAX([Name]) 
    FOR [Name] In([Category1], [Category2], [Category3]) 
) As pt 

注意の上select clauseにそのロジックを追加します。私はあなたが "抑圧するか隠す"ことによってあなたが意図するものか分かりません。おそらくこれがあなたを援助します:

SELECT 
    id 
    , ISNULL([Category1],'-') Category1 
    , ISNULL([Category2],'-') Category2 
    , ISNULL([Category3],'-') Category3 
    , case when [Category1] is null and [Category2] is null and [Category3] is null 
     then 'False' 
     else 'True' 
    end your_ol_name 
FROM yourtable 
PIVOT 
(
    MAX([Name]) 
    FOR [Name] In([Category1], [Category2], [Category3]) 
) As pt 
+0

あなたの質問は今解決されましたか?あなたはまだこの答えについて質問がありますか? [help/accepting](https://stackoverflow.com/help/someone-answers)の詳細については、[** Click The Tick **](https://ibb.co/ikqyO6) –

関連する問題