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

Откуда:
Сообщений: 3
Всем привет!
Помогите, плиз, написать небольшой запрос:

Есть таблица:

Field1 Field2 Field3 Field4
12 0 12 54
23 7 444 32
43 55 5 6445
12 435 43534 4
122 2 444 35

Есть список условий:

1. Field1>Field2
2. Field3=444
3. Field4>32

Необходимо написать запрос, который будет выбирать только те строки, число сработавших условий для которых (не одновременно) равно 2.

В результате нужно получить только первые 2 строки.

Заранее спасибо за помощь
23 июн 17, 10:41    [20585459]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в запросе  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
SELECT *  FROM 
(
SELECT 
... 
Condition1 = CASE WHEN ... THEN 1 ELSE 0 
, Condition2 = CASE WHEN ... THEN 1 ELSE 0 
, Condition3 = CASE WHEN ... THEN 1 ELSE 0 
FROM 
  ... 
) X
WHERE Condition1  + Condition2  + Condition3  = 
23 июн 17, 10:45    [20585467]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в запросе  [new]
Andrey Shepel
Member

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

Select * From

(Select *
Condition1=Case When Field1>Field2 Then 1 Else 0)
,Condition2=Case When Field3=444 Then 1 Else 0
,Condition3=Case When Field4>32Then 1 Else 0

from TableName)

Where Condition1 + Condition2 + Condition3=2


Спасибо.
Как-то так?
23 июн 17, 11:03    [20585505]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в запросе  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20482
Andrey Shepel
Как-то так?
Если не смущают лишние поля в списке вывода - так. Иначе CASE рисуешь прямо в секции WHERE.
23 июн 17, 11:17    [20585548]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в запросе  [new]
Andrey Shepel
Member

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

Спасибо большое.
В он-лайн эмуляторе SQL мне пишет: Every derived table must have its own alias.
Я так понял, что вложенный запрос надо как-то назвать как отдельную таблицу?
23 июн 17, 11:24    [20585571]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в запросе  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Andrey Shepel, да.

Select * From

(Select *
Condition1=Case When Field1>Field2 Then 1 Else 0
,Condition2=Case When Field3=444 Then 1 Else 0
,Condition3=Case When Field4>32Then 1 Else 0

from TableName) as TableName

Where Condition1 + Condition2 + Condition3=2
23 июн 17, 11:25    [20585575]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в запросе  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Andrey Shepel,

алиас просит, запрос покажите
23 июн 17, 11:25    [20585576]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить