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

TypeDateSZnach
12011-11-155
12011-11-306
22011-12-052
22011-12-311
32011-11-153


Необходимо чтобы она вывела все записи кроме Type=1 и при этом DateS равной последнему дню месяца.

Т.е. в итоге должен вывести

TypeDateSZnach
12011-11-155
22011-12-052
22011-12-311
32011-11-153
8 ноя 11, 13:34    [11563356]     Ответить | Цитировать Сообщить модератору
 Re: Правильно написать условие WHERE  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
SELECT TOP(1) WITH TIES *
FROM T
WHERE Type<>1
ORDER BY ROW_NUMBER()OVER(PARTITION BY CONVERT(CHAR(6),DateS,112) ORDER BY DateS DESC);
8 ноя 11, 13:39    [11563406]     Ответить | Цитировать Сообщить модератору
 Re: Правильно написать условие WHERE  [new]
hpv
Member

Откуда:
Сообщений: 153
Дайте более четкое определение, того, что надо получить.

Лично я понял так:

declare @T table ([Type] int, DateS date, Znach int);

insert into @T
values(1, '20111115', 5),
(1,	'20111130',	6),
(2,	'20111205',	2),
(2,	'20111231',	1),
(3,	'20111115',	3)

select t.*
	from @T as t
		where t.[Type] <> 1 or t.DateS <> dateadd(day, -1, dateadd(month, 1, dateadd(day, -day(t.DateS) +1, t.DateS)))
8 ноя 11, 13:55    [11563544]     Ответить | Цитировать Сообщить модератору
 Re: Правильно написать условие WHERE  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
hpv,

см. первое сообщение: результат включает 15.11.2011, потому что больше 15-го в ноябре в таблице нет
Это же не "последний день ноября", а "последний день ноября в таблице"
8 ноя 11, 13:58    [11563569]     Ответить | Цитировать Сообщить модератору
 Re: Правильно написать условие WHERE  [new]
hpv
Member

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

Поэтому я и попросил уточнить ТС чего же он хочет получить.

Я понял так:
Вывести все записи , кроме тех, где Type = 1 И Дата = "Последний день месяца для этой даты".
8 ноя 11, 14:08    [11563654]     Ответить | Цитировать Сообщить модератору
 Re: Правильно написать условие WHERE  [new]
условиеwhere
Guest
Неправильно написал условие задачи.

И вот такие тестовые данные

TypeDateSZnach
12011-11-155
22011-11-157
12011-11-303
22011-11-306


На вход подается дата - @DateReal

Если Type=1 и DateS=последнему дню месяца, то эту запись не выводим.

Если подать @DateReal='2011-11-15' должен вывести

TypeDateSZnach
12011-11-155
22011-11-157


Если подать @DateReal='2011-11-30' должен вывести

TypeDateSZnach
22011-11-306
10 ноя 11, 13:33    [11574524]     Ответить | Цитировать Сообщить модератору
 Re: Правильно написать условие WHERE  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
Первые и последнии дни периодов
10 ноя 11, 13:36    [11574566]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить