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

Откуда: Волгоград
Сообщений: 273
Помогите пожалуйста с запросом.
Есть вот такой код. Нужно выполнить эти обновления в 1 запросе.

set @CN = (select count(ObjectCode) from _TMDiscObjects where ObjectCode=999999999) 
if @CN = 0 insert into _TMDiscObjects (ObjectCode, ScenarioCode, isDeleted) values (999999999, 1, 0)
set @CN = (select count(ObjectCode) from _TMDiscObjects where ObjectCode=999999998) 
if @CN = 0 insert into _TMDiscObjects (ObjectCode, ScenarioCode, isDeleted) values (999999998, 2, 0) 
set @CN = (select count(ObjectCode) from _TMDiscObjects where ObjectCode=999999997) 
if @CN = 0 insert into _TMDiscObjects (ObjectCode, ScenarioCode, isDeleted) values (999999997, 3, 0)
set @CN = (select count(ObjectCode) from _TMDiscObjects where ObjectCode=999999996) 
if @CN = 0 insert into _TMDiscObjects (ObjectCode, ScenarioCode, isDeleted) values (999999996, 4, 0)
set @CN = (select count(ObjectCode) from _TMDiscObjects where ObjectCode=999999995) 
if @CN = 0 insert into _TMDiscObjects (ObjectCode, ScenarioCode, isDeleted) values (999999995, 5, 0)
set @CN = (select count(ObjectCode) from _TMDiscObjects where ObjectCode=999999994) 
if @CN = 0 insert into _TMDiscObjects (ObjectCode, ScenarioCode, isDeleted) values (999999994, 6, 0)
set @CN = (select count(ObjectCode) from _TMDiscObjects where ObjectCode=999999993) 
if @CN = 0 insert into _TMDiscObjects (ObjectCode, ScenarioCode, isDeleted) values (999999993, 7, 0)
set @CN = (select count(ObjectCode) from _TMDiscObjects where ObjectCode=999999992) 
if @CN = 0 insert into _TMDiscObjects (ObjectCode, ScenarioCode, isDeleted) values (999999992, 8, 0)


Что сделал сам.
Сделал времянку #t, аналог _TMDiscObjects
Сделал времянку #t1 где лежат все 999*

далее код
SELECT 'insert into _TMDiscObjects (ObjectCode, ScenarioCode, isDeleted) values (',t1.ObjectCode,',', 1000000000-t1.ObjectCode,',' ,0,')' FROM #t1 AS t1
WHERE t1.ObjectCode NOT IN ( SELECT ObjectCode from #t where ObjectCode IN (999999999,999999998,999999997,999999996,999999995,999999994,999999993,999999992) GROUP BY ObjectCode )


Возвращает
insert into _TMDiscObjects (ObjectCode, ScenarioCode, isDeleted) values (	999999992	,	8	,	0	)
insert into _TMDiscObjects (ObjectCode, ScenarioCode, isDeleted) values (	999999993	,	7	,	0	)
insert into _TMDiscObjects (ObjectCode, ScenarioCode, isDeleted) values (	999999997	,	3	,	0	)


далее CASTом собрать строки, добавить exec, собрать строку и запустить
но может есть решение лучше?
17 янв 14, 11:45    [15428845]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3348
И сколько всего записей в таблице должно получиться - миллиард?
17 янв 14, 11:54    [15428911]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
Glory
Member

Откуда:
Сообщений: 104760
qwertEHOK
далее CASTом собрать строки, добавить exec, собрать строку и запустить
но может есть решение лучше?

Сразу сделать
insert into _TMDiscObjects
из результатов запроса
FROM #t1 AS t1
WHERE t1.ObjectCode NOT IN ( SELECT ObjectCode from #t where ObjectCode IN (999999999,999999998,999999997,999999996,999999995,999999994,999999993,999999992) GROUP BY ObjectCode )
17 янв 14, 11:58    [15428955]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
qwerty112
Guest
так чтоле ?
--insert into _TMDiscObjects (ObjectCode, ScenarioCode, isDeleted)
select t1.ObjectCode, 10 - t1.ObjectCode % 10, 0 
from t1
where not exists (select 1 from _TMDiscObjects a where a.ObjectCode=t1.ObjectCode)
17 янв 14, 11:59    [15428958]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
qwertEHOK
Member

Откуда: Волгоград
Сообщений: 273
неее,
девяток немного, не более 10
17 янв 14, 11:59    [15428960]     Ответить | Цитировать Сообщить модератору
 Re: Поломать голову  [new]
qwertEHOK
Member

Откуда: Волгоград
Сообщений: 273
Glory
Сразу сделать
insert into _TMDiscObjects
из результатов запроса
FROM #t1 AS t1
WHERE t1.ObjectCode NOT IN ( SELECT ObjectCode from #t where ObjectCode IN (999999999,999999998,999999997,999999996,999999995,999999994,999999993,999999992) GROUP BY ObjectCode )


АААААААААААААААААААА
100%

спасибо ) идеально
17 янв 14, 12:02    [15428995]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить