我需要一些t-sql帮助才能在下表中创建列“ Grp”。基本上,我需要创建一个列来说明何时存在值,如果该值为null,则将其从“ Grp”列中排除。该表是我需要的最终结果的一个示例(现在仅存在Col1,Col2,Col3)
答案 0 :(得分:2)
使用几个CASE
表达式和一个STUFF
来删除前导-
。
SELECT
STUFF(
(
CASE WHEN T.Col1 IS NOT NULL THEN '-Col1' ELSE '' END +
CASE WHEN T.Col2 IS NOT NULL THEN '-Col2' ELSE '' END +
CASE WHEN T.Col3 IS NOT NULL THEN '-Col3' ELSE '' END
),
1, 1, ''),
T.Col1,
T.Col2,
T.Col3
FROM
YourTable AS T
答案 1 :(得分:0)
您可以在以下情况下使用case语句:
select
left(t.Grp,len(Grp)-1) as Grp,
t.col1,t.col2,t.col3
from (
select col1, col2, col3,
case when col1 is null then '' else 'col1-' +
case when col2 is null then '' else 'col2-' +
case when col3 is null then '' else 'col3-'
as Grp
from your_table
) t