更新ステートメント内に挿入ステートメントをネストすることは可能ですか?
背景:
merge
この句を初めて使用して、一部のデータを変換しています。つまり、多くの列を持つ単一のソース テーブルがありますが、より適切な言葉がない場合は、より構造化されたモデル/スキーマに変換する必要があります。モデルのそれに似ていBI
ます。また、BI モデリングの経験もありません (読み始めてから 1 か月も経っていません)。どんな助けでも大歓迎です。
支援に必要なその他の情報があれば喜んで提供します。
エラー:
メッセージ 156、レベル 15、状態 1、行 47
キーワード「select」付近の構文が正しくありません。メッセージ 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;