我需要确定是否应该根据所选表格的processDate列中的数据将数据插入theDate或theDate2列。我无法在CASE语句中使用列(我在尝试运行下面的代码时遇到错误),我找不到解决方案。我怎样才能做到这一点? processDate是#tableTwo的一个列。
INSERT INTO tableOne
CASE WHEN processDate <> '' THEN + ',' + theDate ELSE + ',' + theDate2
END
SELECT sDate
FROM #tableTwo
答案 0 :(得分:1)
如果可以通过标志processDate确定theDate和theDate2,则在select而不是insert中执行。假设列可以为空(因为INSERT子句中的CASE似乎表明它们是互斥的,那么我倾向于做类似的事情;
INSERT INTO tableOne (theDate, theDate2)
SELECT
CASE WHEN processDate <> ''
THEN sDate
ELSE NULL
END theDate,
CASE WHEN processDate = ''
THEN sDate
ELSE NULL
END theDate2,
FROM #tableTwo
答案 1 :(得分:0)
两个查询会是什么样的:
INSERT INTO tableOne (theDate)
SELECT sDate
FROM #tableTwo
WHERE processDate <> ''
跟随
之类的东西INSERT INTO tableOne (theDate2)
SELECT sDate
FROM #tableTwo
WHERE processDate = ''
答案 2 :(得分:0)
插入的正确语法是
insert into table
(field1, field2, etc)
select field3, field4, etc
from somewhere
我不知道这是否有效,但您可以尝试:
insert into tableOne
(case when processDate <> '' then theDate else Date2 end)
select sdate
from #table2