Любая помощь, которая может быть предоставлена, будет высоко оценена.Оператор с привязкой в SQL Server 2008
У меня есть следующие две таблицы
TS_DEF_TRADER:
DEF_TRADER_ID MANAGER_CD INV_CLASS_CD TRADER_CD
------ ------- ---------- ---------
101 HARRIT EQTY MMGR_DT
108 NAIDON EQTY MMGR_DT
123 MLONDG EQTY MMGR_DT
и PDF_USER_GROUP:
GRP_CD USER_CD
------ -------
STANLIB_MULTI_MANAGER HARRIT
STANLIB_MULTI_MANAGER NAIDON
STANLIB_MULTI_MANAGER MLONDG
STANLIB_MULTI_MANAGER FARRYM
STANLIB_MULTI_MANAGER HOLMEM
То, что я хочу сделать, это создать своего рода оператора вставки петлевой SQL (если это правильная терминология), которая проверит файл PDF_USER_GROUP и будет ли USER_CD с GRP_CD = STANLIB_MULTI_MANAGER, отсутствующим в TS_DEF_TRADER. Если ничего не хватает, то он вставляет соответствующую строку.
Я написал ниже заявление:
declare @DefTraderID INT
declare @Mgr varchar(200)
set @DefTraderID = (select MAX(DEF_TRADER_ID) + 1 from TS_DEF_TRADER)
set @Mgr = (select min(USER_CD) from PDF_USER_GROUP where not exists
(select * from TS_DEF_TRADER where
TRADER_CD = 'MMGR_DT' and
INV_CLASS_CD = 'EQTY' and
TS_DEF_TRADER.MANAGER_CD = PDF_USER_GROUP.USER_CD)
and GRP_CD = 'STANLIB_MULTI_MANAGER' and USER_CD not in ('MMGR_DT', 'SLIB_INDEX'))
insert into TS_DEF_TRADER (DEF_TRADER_ID,MANAGER_CD,INV_CLASS_CD, TRADER_CD)
values (@DefTraderID,@Mgr, 'EQTY', 'MMGR_DT')
Если я запускаю это вручную сам дважды, я получаю следующий результат, что я хочу:
DEF_TRADER_ID MANAGER_CD INV_CLASS_CD TRADER_CD
------ ------- ---------- ---------
101 HARRIT EQTY MMGR_DT
108 NAIDON EQTY MMGR_DT
123 MLONDG EQTY MMGR_DT
124 FARRYM EQTY MMGR_DT
125 HOLMEM EQTY MMGR_DT
Если бы я был бежать это в третий раз это произойдет:
DEF_TRADER_ID MANAGER_CD INV_CLASS_CD TRADER_CD
------ ------- ---------- ---------
101 HARRIT EQTY MMGR_DT
108 NAIDON EQTY MMGR_DT
123 MLONDG EQTY MMGR_DT
124 FARRYM EQTY MMGR_DT
125 HOLMEM EQTY MMGR_DT
126 NULL EQTY MMGR_DT
мне это нужно запустить сам по себе (т.е. петли) и остановки один раз, когда она урожденная ds, поэтому мы не получаем NULL.
Чтобы использовать то, что вы хотите, если существует файл PDF_User_Group.User_CD, который не существует в TS_def_Trader.Manager_CD и PDF_User_Group.GRP_CD == STANLIB_MULTI_MANGER. Вы хотите добавить его в TS_Def_trader? – gh9