Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите пожалуйста с выборкой  [new]
nickolay_fff
Member

Откуда:
Сообщений: 378
Доброго времени суток! В общем, ситуация такая: есть таблица
                  RDR_ID     IDP
                  --------------
                  014270      1
                  014270      2  
                  014270      3
                  --------------
                  028270      1
                  028270      4
                  --------------
                  034270      3
                  034270      5 
                  034270      6 
Необходимо для каждого RDR_ID проверить наличие IDP равного, к примеру 3, и если нет- добавить
17 июн 11, 09:48    [10826082]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с выборкой  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
DECLARE @T TABLE(RDR_ID VARCHAR(6),IDP INT);
INSERT @T(RDR_ID,IDP)VALUES
 ('014270',      1)
,('014270',      2)  
,('014270',      3)
,('028270',      1)
,('028270',      4)
,('034270',      3)
,('034270',      5)
,('034270',      6);

SELECT * FROM @T ORDER BY RDR_ID,IDP;

MERGE @T T
USING(SELECT DISTINCT RDR_ID FROM @T) S ON T.RDR_ID=S.RDR_ID AND T.IDP=3
WHEN NOT MATCHED THEN INSERT(RDR_ID,IDP) VALUES(S.RDR_ID,3);

SELECT * FROM @T ORDER BY RDR_ID,IDP;
17 июн 11, 10:08    [10826179]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с выборкой  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
nickolay_fff,
iap предложил наверное лучший вариант.

Вот еще на всякий случай
DECLARE @T TABLE(RDR_ID VARCHAR(6),IDP INT);
INSERT @T(RDR_ID,IDP)VALUES ('014270', 1), ('014270',2), ('014270',3), ('028270',1), ('028270',4), ('034270',3), ('034270',5), ('034270',6);

SELECT * FROM @T ORDER BY RDR_ID,IDP;

insert @t
 select rdr_id, 3 from
 (select *, case idp when 3 then 3 else 0 end [gr] from @t) t
 group by rdr_id
 having sum(gr) = 0

SELECT * FROM @T ORDER BY RDR_ID,IDP
17 июн 11, 10:38    [10826384]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с выборкой  [new]
nickolay_fff
Member

Откуда:
Сообщений: 378
Спасибо, а как можно эти добавляемые RDR_ID отдельно куда-нибудь вынести?
17 июн 11, 11:17    [10826662]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с выборкой  [new]
Валдай
Member

Откуда:
Сообщений: 113
nickolay_fff
Спасибо, а как можно эти добавляемые RDR_ID отдельно куда-нибудь вынести?


Вы про OUTPUT Clause у MERGE почитайте
17 июн 11, 11:54    [10826969]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с выборкой  [new]
nickolay_fff
Member

Откуда:
Сообщений: 378
Благодарю, почитал :)
17 июн 11, 12:29    [10827332]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить