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

Откуда:
Сообщений: 32
Добрый день!
Необходимо помощь с запросом, а точнее с условием where
Запросом из нескольких таблиц получил выборку примерно такую:

ID | date | QWE
_____|_______________|_____
2 | 27.08.2009 | 3
2 | 26.11.2009 | NULL
2 | 02.02.2010 | NULL
2 | 28.04.2010 | NULL
1 | 01.08.2011 | 4
1 | 07.03.2011 | Null
456 | 28.04.2010 | 3
456 | 30.04.2010 | Null
456 | 31.04.2010 | Null

Необходимо отсюда выбрать по QWE = 3.
Подскажите, как сделать такое условие чтоб в результат также попадали и NULLы, т.е.:
ID | date | QWE
_____|____________|_________
2 |27.08.2009 | 3
2 |26.11.2009 | NULL
2 |02.02.2010 | NULL
2 |28.04.2010 | NULL
456 |28.04.2010 | 3
456 |30.04.2010 | Null
456 |31.04.2010 | Null
10 окт 12, 22:21    [13299274]     Ответить | Цитировать Сообщить модератору
 Re: Просьба помочь с условием  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
where QWE =3 or QWE IS NULL
10 окт 12, 22:24    [13299289]     Ответить | Цитировать Сообщить модератору
 Re: Просьба помочь с условием  [new]
Роман86
Member

Откуда:
Сообщений: 32
Maxx,
нет, так не пойдет, потому что NULL тогда все возьмутся, а мне нужно конкретно по определенному ID. В этом и проблема.
10 окт 12, 22:49    [13299396]     Ответить | Цитировать Сообщить модератору
 Re: Просьба помочь с условием  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Роман86
Необходимо отсюда выбрать по QWE = 3.
Подскажите, как сделать такое условие чтоб в результат также попадали и NULLы, т.е.:

КЛЁВА
автор
нет, так не пойдет, потому что NULL тогда все возьмутся, а мне нужно конкретно по определенному ID. В этом и проблема.

ТЕСТ
declare @t table (i int , x int)
insert into @t (i,x ) values (1, NULL), (2, NULL),(1,3),(2,3),(1,4)
select * from @t where x =3 or x is null


Че вам конкретно то надо ? А то вы в 2х постах путаетесь
10 окт 12, 22:53    [13299408]     Ответить | Цитировать Сообщить модератору
 Re: Просьба помочь с условием  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
автор
declare @t table (i int , x int)
insert into @t (i,x ) values (1, NULL), (2, NULL),(1,3),(2,3),(1,4)
select t.*
from @t t
where exists(
select 1
from @t
where t.I =i
and x =3
)


так надо ? Или как ?
10 окт 12, 22:57    [13299426]     Ответить | Цитировать Сообщить модератору
 Re: Просьба помочь с условием  [new]
Роман86
Member

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

declare @t table (i int , x int)
insert into @t (i,x ) values (1, NULL), (2, NULL),(1,3),(2,3),(1,4),(4,4),(4,null),(5,null), (5,4)
select * from @t where x =3 or x is null


Если так, то в результате появляются лишние ID 4 и 5 с NULL-ами. Не подскажете как их убрать?
10 окт 12, 23:16    [13299502]     Ответить | Цитировать Сообщить модератору
 Re: Просьба помочь с условием  [new]
Роман86
Member

Откуда:
Сообщений: 32
declare @t table (i int , x int)
insert into @t (i,x ) values (1, NULL), (2, NULL),(1,3),(2,3),(1,4),(4,4),(4,null),(5,null), (5,4)
select * from @t where x =3 or x is null


Sorry (1,4) случайно поставил в предыдущем посте. Такого быть не может. Т.к. у I=1 уже есть X=3
11 окт 12, 00:23    [13299729]     Ответить | Цитировать Сообщить модератору
 Re: Просьба помочь с условием  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Роман86,

а чем предидуший пост не угодил,он твроде и решает вашу задачу как я понял
11 окт 12, 01:00    [13299840]     Ответить | Цитировать Сообщить модератору
 Re: Просьба помочь с условием  [new]
tetxx
Member

Откуда:
Сообщений: 297
Так пойдет?
declare @t table (i int , x int)
insert into @t (i,x ) values (1, NULL), (2, NULL),(1,3),(2,3),(1,4),(4,4),(4,null),(5,null), (5,4)

select i,x
from (
  select *,MAX(x)over(partition by i) chk
  from @t
  where x = 3 or x is null
) t
where chk is not null
11 окт 12, 02:11    [13299925]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить