我试图根据另一列(Selection
和IsAssetCode
)推导出一列(Level5
)。使用Case语句时获取空值
Selection
列有两种类型的条目 - “所有资产”和“核心资产”,IsAssetCode
为0
或1
。 IsAssetCode = 0
对应于“所有资产”,并且1
是“核心资产”。
我在尝试分离核心和非核心资产,但我在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)标签与正在使用的数据库; (2)提供样本数据和期望的结果。另外,你的SQL查询在语法上不是正确的('case'上没有'end')。而'NULL'是列中的值,而不是行的状态。 –