別の列(Selection
およびIsAssetCode
)に基づいて列(Level5
)を導出しようとしています。Case文を使用するときにNULL値を取得する
Selection
列には、次の2種類のエントリがある - 「すべての資産」と「コア資産を」、そしてIsAssetCode
は0
または1
です。 IsAssetCode = 0
は「All Asset」に対応し、1
は「Core Asset」です。
私はコア資産とノンコア資産を分けようとしていますが、Level5
に「すべての資産」を含む余分な行があります。
Select *,
Case when Selection ='All Assets' then 'Other Assets'
When (IsAssetCode =1 and Selection <> 'ALL ASSETS') THEN Selection
End as Level5
From ((Select (columns) from tbl where IsAssetCode = 0
EXCEPT
SELECT (Columns) FROM tbl where IsAssetCode = 1)
Union
Select (column) from tbl where IsAssetCode = 1
)
入力データ:
B1 Black All Assets 0 B1 White All Assets 0 B1 Red All Assets 0 B1 Black Core Asset 1
所望の出力:
B1 Black Core Asset 1 B1 White Other Asset 2 B1 Red Other Asset 2
を編集ご質問や、使用しているデータベースとの(1)タグを取得するために、COUNT()とGROUP BYを使用します。 (2)サンプルデータおよび所望の結果を提供する。さらに、SQLクエリは構文的に正しいものではありません( 'case'に' end'はありません)。また、NULLは列の値であり、行の状態ではありません。 –