是否可以在更新语句中嵌套插入语句?
背景:
我merge
第一次使用该子句来转换一些数据。也就是说,我有一个包含许多列的单个源表,但如果缺少更好的词,我需要转换为更结构化的模型/模式;类似于BI
模型。我在 BI 建模方面也缺乏经验(现在才开始阅读它不到一个月)。任何帮助将不胜感激。
我很乐意提供可能需要帮助的任何其他信息。
错误:
消息 156,级别 15,状态 1,第 47 行
关键字“选择”附近的语法不正确。消息 102,级别 15,状态 1,第 48 行
')' 附近的语法不正确。
这些是在我尝试插入 tertiary.WEBADDRESS行时抛出的。
代码:
--Transform operation
--web address dimension insert
use UniversityUS
merge tertiary.INSTITUTION as target
using(
select UNITID,
INSTNM,
ADDR,
CITY,
STABBR,
ZIP,
OBEREG,
WEBADDR,
ADMINURL,
FAIDURL,
APPLURL,
HLOFFER,
GENTELE,
LOCALE,
CARNEGIE,
FAXTELE,
IALIAS,
F1SYSNAM,
COUNTYNM,
LONGITUD,
LATITUDE
--geography::Point(LATITUDE,LONGITUD,4326)) as [LOCATION]
from staging.secondary_university
where closedat = -2
) as source
on ( source.UNITID = target.ROWSOURCECONTROLID )
when not matched by target then
--this would represent my fact table
insert (INSTNM,IALIAS,GENTELE,F1SYSNAM,ROWSOURCECONTROLID)
values (source.INSTNM,source.IALIAS,source.GENTELE,source.F1SYSNAM,source.UNITID)
when matched then
update set target._WEBADDRID =
(
select wa.wid
from
(
--this would represent one of my many dimension tables
--if i comment the next two lines it works
--but i need to know how will these be updated.
insert into tertiary.WEBADDRESS
values(source.WEBADDR,source.ADMINURL,source.FAIDURL,source.APPLURL)
select scope_identity() as wid
)wa
)
when not matched by source then
delete
output $action;