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

Откуда: Киев
Сообщений: 173
Доброго дня всем!

Есть работающий запрос, типа:
select .... from .... where ...... group by ......
union all
select .... from .... where ...... group by ......
union all
select .... from .... where ...... group by ......
union all
select .... from .... where ...... group by ......

Он нормально выполняется. Но я хочу ещё и обработать тот набор данных, что мне возвращает этот запрос. Через select into не получилось, на простых конструкциях всё работает, только применяю к этому запросу работать отказывается.

Подскажите какие темы смотреть поиском?

Спасибо.
5 окт 09, 19:41    [7745033]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из запроса  [new]
iljy
Member

Откуда:
Сообщений: 8711
RSRuslan,

select * into #TempTable
from
(
select .... from .... where ...... group by ......
union all
select .... from .... where ...... group by ......
union all
select .... from .... where ...... group by ......
union all
select .... from .... where ...... group by ......
) t
5 окт 09, 19:55    [7745075]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из запроса  [new]
RSRuslan
Member

Откуда: Киев
Сообщений: 173
Не работает :( Что-то не нравится ему.

Пишет
Incorrect syntax near ')'.

Вот текст запроса:
select * into #TEMP_TABLE from (
select '' as Дата, accid as [Счет $Счет.Основной], max(vsc0) as Контрагенты_вид,
sc0 as [Контрагенты $Субконто], sum(sd) as СНД, 0 as ДО, 0 as КО
from
(select id from _1saccs (nolock)
where (planid = 334) and (schkod like ' 36.%')) as accnt, _1sbkttl ttl (nolock)
where
(date = '20090401') and (kind = '1') and (accid = accnt.id) group by accid, sc0 having sum(sd) <> 0

union all

select '' as Дата, accdtid as [Счет $Счет.Основной], max(vdtsc0) as Контрагенты_вид,
dtsc0 as [Контрагенты $Субконто], sum(sum_) as СНД, 0 as ДО, 0 as КО
from
(select id from _1saccs (nolock) where (planid = 334) and (schkod like ' 36.%')) as accnt,
_1sentry entry (nolock index=accdtid)
where
(accdtid = accnt.id) and (date_time_docid like '20090401%') and (provkind = ' ') and
(active = ' ') group by accdtid, dtsc0)
5 окт 09, 20:21    [7745124]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из запроса  [new]
Kartas
Member

Откуда: Минск, Беларусь
Сообщений: 135
RSRuslan,

автор
) t


назначте вложенному запросу алиас
5 окт 09, 20:54    [7745221]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из запроса  [new]
RSRuslan
Member

Откуда: Киев
Сообщений: 173
Kartas,

Спасибо! Заработало! Группировать и накладывать новые условия на извлечение записей из #TEMP_TABLE можно без ограничений? Как это скажется на производительности?
5 окт 09, 21:47    [7745346]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из запроса  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
можно проще:
select .... into .... from .... where ...... group by ......
union all
select .... from .... where ...... group by ......
union all
select .... from .... where ...... group by ......
union all
select .... from .... where ...... group by ......
into [таблица] надо просто написать в первом selectе unionа.
Вообще-то, это есть в описании UNION в BOL...
B. Using SELECT INTO with UNION
5 окт 09, 22:09    [7745407]     Ответить | Цитировать Сообщить модератору
 Re: Запрос из запроса  [new]
RSRuslan
Member

Откуда: Киев
Сообщений: 173
Спасибо за помощь!
Касательно BOLа - я согласен, но в жизни как всегда не дают времени на самообразование :(
6 окт 09, 09:54    [7746106]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить