Tsql 使用case或T-SQL选择要返回的列数据
我有一个T-SQL存储过程,它使用为简洁起见简化的merge语句更新表:Tsql 使用case或T-SQL选择要返回的列数据,tsql,Tsql,我有一个T-SQL存储过程,它使用为简洁起见简化的merge语句更新表: merge into Table_ACT as act using (select s1, s2, s3, s4, s5, s6, s7, dbo.GetACTScheduleID(t.s1) as daily_schedule_id from dbo.RotaTmp t) as s on act.employeeid = s.employeeid when matched then update
merge into Table_ACT as act
using (select s1, s2, s3, s4, s5, s6, s7, dbo.GetACTScheduleID(t.s1) as daily_schedule_id
from dbo.RotaTmp t) as s on act.employeeid = s.employeeid
when matched then
update set
act.shiftcodeID = s.s1 .....qry continues after
这一切都很好,但我必须每天重复查询7次更改行:
act.shiftcodeID = s.s1 to act.shiftcodeID = s.s2 then act.shiftcodeID = s.s3 etc
我希望能够通过使用If或Case语句来选择要使用的“S”字段,但我无法确定将其放置在何处。我猜您希望这样:
merge into Table_ACT as act
using (select s1, s2, s3, s4, s5, s6, s7, dbo.GetACTScheduleID(t.s1) as
daily_schedule_id
from dbo.RotaTmp t) as s on act.employeeid = s.employeeid
when matched then
update set
act.shiftcodeID = CASE WHEN <condition 1> THEN s.s1
WHEN <condition 2> THEN s.s2
WHEN <condition 3> THEN s.s3
WHEN <condition 4> THEN s.s4
WHEN <condition 5> THEN s.s5
WHEN <condition 6> THEN s.s6
WHEN <condition 7> THEN s.s7
END
.....qry continues after
你想做什么还不清楚。你能发布一些示例数据吗?例如,目标表的一部分和源表的一部分,以及最终期望的结果。请阅读以获取改进问题的一些提示。使用适当的软件MySQL、Oracle、DB2等标记数据库问题是很有帮助的。。。和版本,例如sql-server-2014。语法和特征的差异通常会影响答案。请注意,tsql缩小了选择范围,但没有指定数据库。