基本上我需要用另一个表中的日期填充我的临时表,但是按照原始(数据)表中已经订购(visit_cnt)的特定顺序....
**#PIVOT(数据表)
Member id name first_service_date visit_cnt**
05465 matt 11/13 2
05465 matt 9/12 1
64985 mark 12/13 2
64985 mark 8/13 1
WCV_TEMP(临时) 我需要我的桌子看起来像这样。只有具有多个日期的单个记录...
Member id name visit1 visit2 visit3
05465 matt 7/12 3/13 8/13
64965 mark 9/11 5/12 2/13
78995 luke 12/10 5/12 7/13
我在第二个表中使用WHERE CLAUSE更新每个列
UPDATE WCV_TEMP.VISIT_1
SET WCV_TEMP.VISIT_1= #PIVOT.[FIRST SERVICE DATE] WHERE #PIVOT.VISIT_CNT =1
UPDATE WCV_TEMP.VISIT_2
SET WCV_TEMP.VISIT_2= #PIVOT.[FIRST SERVICE DATE] WHERE #PIVOT.VISIT_CNT =2
UPDATE WCV_TEMP.VISIT_3
SET WCV_TEMP.VISIT_3= #PIVOT.[FIRST SERVICE DATE] WHERE #PIVOT.VISIT_CNT =3
UPDATE WCV_TEMP.VISIT_5
SET WCV_TEMP.VISIT_5= #PIVOT.[FIRST SERVICE DATE] WHERE #PIVOT.VISIT_CNT =4
UPDATE WCV_TEMP.VISIT_5
SET WCV_TEMP.VISIT_5= #PIVOT.[FIRST SERVICE DATE] WHERE #PIVOT.VISIT_CNT =5
任何帮助都将不胜感激!!
答案 0 :(得分:0)
您的临时表中缺少Join
。尝试这样的事情:
Update W
Set VISIT_1 = P.[FIRST SERVICE DATE]
From WCV_TEMP W
Join #PIVOT P On P.[Member Id] = W.[Member Id]
Where P.VISIT_CNT = 1
与您的其他Update
陈述类似。
答案 1 :(得分:0)
你不需要4-5个单独的更新语句,你可以使用类似这样的CASE语句将所有这些都放在一个更新语句中....
Update W
Set W.VISIT1 = CASE
WHEN P.VISIT_CNT = 1
THEN P.[FIRST_SERVICE_DATE]
END
,W.VISIT2 = CASE
WHEN P.VISIT_CNT = 2
THEN P.[FIRST_SERVICE_DATE]
END
,W.VISIT3 = CASE
WHEN P.VISIT_CNT = 3
THEN P.[FIRST_SERVICE_DATE]
END
,W.VISIT4 = CASE
WHEN P.VISIT_CNT = 4
THEN P.[FIRST_SERVICE_DATE]
END
From WCV_TEMP W INNER JOIN #PIVOT P
On P.[Member Id] = W.[Member Id]