我有两个问题。
(1)我有colA, colB, ColC, colD
列。我需要更改colC中的值。
基于以下条件
如果colB = 1则colC ='Tom1'否则if colD ='Jef'的前3个字符然后colC ='Tom2' Else Null。
(2)如何将一个默认值'12:00 pm'添加到整数列?
请在这里帮助我。
提前致谢
答案 0 :(得分:0)
您所需的逻辑完整无法显示。比如你实际上想要保留当前colA值的值是什么?你正在写colb = 1然后colC =' Tom1' ...我认为那应该是和。
CASE
WHEN colB = 1 and colC = 'Tom1' THEN ????
WHEN LEFT(colD) = 'Jef' AND colC = 'Tom2' THEN ????
ELSE NULL
END
如果您只想保留ColA值,那么您实际上可以将yoru案例陈述与OR结合起来
CASE
WHEN (colB = 1 and colC = 'Tom1')
OR (LEFT(colD) = 'Jef' AND colC = 'Tom2') THEN colA
ELSE NULL
END
答案 1 :(得分:0)
假设您在生成colC时完全具有colB和colD的值,您可以使用以下内容:
select
colA
,colB
,case
when colB = 1 then 'Tom1'
when left(colD,3) = 'Jef' then 'Tom2'
else null
end as colC
,colD
如果colB和colD也是计算列,并且您不想重复计算,则可以在子查询中执行这些操作并在外部查询中计算colC。
select
t1.colA
,t1.colB
,case
when t1.colB = 1 then 'Tom1'
when left(t1.colD,3) = 'Jef' then 'Tom2'
else null
end as colC
,t1.colD
from
(
select
colA
,case when someCondition then 1 else 2 end as colB
,(select top 1 name from someTable) as colD
from
... -- whatever your source tables are
) t1