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

Откуда:
Сообщений: 8
Допустим есть некая табличка:
FIO string (Фамиилия Имя Отчество)
SUM int (Баллы)
LGOT string (Льготник \ Не льготник)

Нужно объединить два запроса, при условии что результаты второго не должны содержать результаты первого запроса.
Но перед тем как их объединить нужно каждый сортировать и выбрать верхние результаты строк.
Ключевое слово UNION не подходит, а EXCEPT и INTERSECT не знаю как работают и подойдут ли они для этого.

select top(5), FIO, SUM, LGOT
from table 
where LGOT = 'Льготник'
order by SUM desc, FIO asc

select top(10), FIO, SUM, LGOT
from table 
order by SUM desc, FIO asc
26 апр 13, 06:30    [14233109]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
with cte
as
(
select top(5) FIO, SUM, LGOT
from table 
where LGOT = 'Льготник'
order by SUM desc, FIO asc
)
select * from cte
union all
select * from
(
select top(10) FIO, SUM, LGOT
from table t where not exists ( select * from cte c where c.fio = t.fio )
order by SUM desc, FIO asc
)
26 апр 13, 06:40    [14233113]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
aleks2
Guest
LEEEX
Нужно объединить два запроса, при условии что результаты второго не должны содержать результаты первого запроса.
Но перед тем как их объединить нужно каждый сортировать и выбрать верхние результаты строк.


Хто понял, что тут написано - пусть первый бросит в меня камень.

ЗЫ. Тредстартеру рекомендуется пойти на курсы "внятной постановки технических заданий".
26 апр 13, 06:40    [14233114]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
aleks2
Хто понял, что тут написано - пусть первый бросит в меня камень.
Я понял что написано, но не понял зачем такое нужно :)
26 апр 13, 06:47    [14233117]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
LEEEX
Member

Откуда:
Сообщений: 8
Knyazev Alexey
with cte
as
(
select top(5) FIO, SUM, LGOT
from table 
where LGOT = 'Льготник'
order by SUM desc, FIO asc
)
select * from cte
union all
select * from
(
select top(10) FIO, SUM, LGOT
from table t where not exists ( select * from cte c where c.fio = t.fio )
order by SUM desc, FIO asc
)


Сообщение 102, уровень 15, состояние 1, строка 16
Неправильный синтаксис около конструкции ")".
26 апр 13, 13:09    [14234764]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
LEEEX
Member

Откуда:
Сообщений: 8
select * from <-- сдесь не нужно указывать таблицу?
(
select top(10) FIO, SUM, LGOT
from table t where not exists ( select * from cte c where c.fio = t.fio )
order by SUM desc, FIO asc
)
26 апр 13, 13:10    [14234773]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Гость333
Member

Откуда:
Сообщений: 3683
LEEEX
select * from <-- сдесь не нужно указывать таблицу?
(
select top(10) FIO, SUM, LGOT
from table t where not exists ( select * from cte c where c.fio = t.fio )
order by SUM desc, FIO asc
)

То, что идёт в скобках после from — есть производная таблица.
Ей нужно присвоить какой-нибудь псевдоним, например:
select * from
(
select top(10) FIO, SUM, LGOT
from table t where not exists ( select * from cte c where c.fio = t.fio )
order by SUM desc, FIO asc
) as X
26 апр 13, 13:19    [14234830]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
icprog
Member

Откуда:
Сообщений: 166
select * from <-- сдесь не нужно указывать таблицу? -- здесь не нужно
(
select top(10) FIO, SUM, LGOT
from table t where not exists ( select * from cte c where c.fio = t.fio )
order by SUM desc, FIO asc
) t <-- вот здесь алиас нужен
26 апр 13, 13:20    [14234840]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить