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

Откуда:
Сообщений: 520
День добрый, мой сниппет здесь
create table t1(id int, name varchar(10), ssn int)
create table t1_exclusive(id int)
insert into t1(id,name,ssn) values 
 (1,'A',111)
,(2,'B',222)
,(3,'C',111)
,(4,'D',333)
,(5,'E',444)
,(6,'F',555)
,(7,'G',222)
,(8,'H',777)
,(9,'I',888)
,(10,'J',999)

insert into t1_exclusive(id) values(2)


Теперь select с where t1.ssn=222 должен вернуть:

id name ssn
2 B 222

с where t1.ssn=111 должен вернуть:

id name ssn
1 А 111
3 С 111

А без фильтрации по ssn должен вернуть все записи из t1. Как такое сделать одним запросом (можно с подзапросами)?
5 июл 18, 12:32    [21545566]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
Щукина Анна
Member

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

тут
5 июл 18, 12:46    [21545640]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
А по-моему так
5 июл 18, 12:57    [21545707]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
Не учел запрос по всем SSN - нужно так
5 июл 18, 13:06    [21545746]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
Щукина Анна
Member

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

В чем тайный смысл использования SIGN, если в дальнейшем всё равно проверяете лишь на IS [not] NULL ?
5 июл 18, 13:07    [21545753]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
Щукина Анна,

Функционально никакого - просто захотель чтобы было именно "1"
5 июл 18, 13:21    [21545832]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
... как флаг эксклюзивности данного этого, или наличия эксклюзивного id по данному ssn
5 июл 18, 13:22    [21545843]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
Blackmore
Member

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

Спасибо, то что надо. Но это было для MSSQL, а сейчас от меня хотят такого же, но на Informix.
5 июл 18, 14:35    [21546165]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30773
Blackmore
Kopelly,

Спасибо, то что надо. Но это было для MSSQL, а сейчас от меня хотят такого же, но на Informix.

Почему бы тогда не задать вопрос а разделе по Informix???
5 июл 18, 14:42    [21546208]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
Blackmore
Member

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

Уже задан :) Просто я тренировался с запросом на MSSQL, а потом меня "обрадовали" уточнением целевого сервера.
5 июл 18, 14:54    [21546258]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30773
Blackmore
а потом меня "обрадовали" уточнением целевого сервера.
Однако :-)
5 июл 18, 15:54    [21546490]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
Щукина Анна
Member

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

А информикс у вас «какой системы»?
Если мне память не изменяет, то с версии 12.10 аналитические (оконные - в терминологии MS SQL Server-а) функции поддерживаются в объеме не меньшем, чем у скуль-сервера.
В доке читать про OLAP ANALYTIC SQL FUNCTIONS
5 июл 18, 18:31    [21547122]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
Blackmore
Member

Откуда:
Сообщений: 520
Щукина Анна,

Да, Informix 12
6 июл 18, 10:44    [21548515]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
Blackmore
Member

Откуда:
Сообщений: 520
Щукина Анна,

Только я не совсем понял про "оконные функции". В примере для MSSQL фигурирует CTE.
6 июл 18, 10:45    [21548522]     Ответить | Цитировать Сообщить модератору
 Re: Как одним запросом сделать такую выборку  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
Blackmore
Щукина Анна,

Только я не совсем понял про "оконные функции". В примере для MSSQL фигурирует CTE.
в данном случае СТЕ - не более, чем "синтаксический сахар" и вполне себе заменяется на derived table:

select bla-bla-bla from (тут запрос из СТЕ) as DT
6 июл 18, 11:34    [21548817]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить