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

Откуда: ыть-ыть
Сообщений: 1842
Есть такой вот запрос:
Select convert(datetime, floor(convert(float, h.StartDate))) as dt,
nn=case when co.State_ID=7 then 3 else 0 end,
calc=case when co.State_ID=6 then 4 else 0 end,
decl=case when co.State_ID=27 then 5 else 0 end,
count(h.State_ID) as cnt
From dbo.contract co
join ContractHistory h on h.DOG_NUM=co.dog_num
where
	h.StartDate>='20091101' and h.StartDate<'20091130'
	and (co.State_ID=7 or co.State_ID=6 or co.State_ID=27)
group by 
convert(datetime, floor(convert(float, h.StartDate)))
,co.State_ID

order by dt
Возвращает:
2009-11-01 00:00:00.000	0	4	0	9
2009-11-01 00:00:00.000	0	0	5	106
2009-11-02 00:00:00.000	0	4	0	83
2009-11-02 00:00:00.000	0	0	5	267
2009-11-03 00:00:00.000	0	0	5	238
2009-11-03 00:00:00.000	0	4	0	15
2009-11-04 00:00:00.000	0	0	5	68
2009-11-04 00:00:00.000	0	4	0	2
2009-11-05 00:00:00.000	0	0	5	259
2009-11-05 00:00:00.000	0	4	0	35
2009-11-06 00:00:00.000	0	0	5	335
2009-11-06 00:00:00.000	3	0	0	1
2009-11-06 00:00:00.000	0	4	0	80
2009-11-07 00:00:00.000	0	0	5	342
2009-11-07 00:00:00.000	0	4	0	17
2009-11-08 00:00:00.000	0	4	0	16
2009-11-08 00:00:00.000	0	0	5	306
2009-11-09 00:00:00.000	0	0	5	3629
2009-11-09 00:00:00.000	3	0	0	12
2009-11-09 00:00:00.000	0	4	0	248
2009-11-10 00:00:00.000	3	0	0	7
2009-11-10 00:00:00.000	0	0	5	1130
2009-11-10 00:00:00.000	0	4	0	103
2009-11-11 00:00:00.000	3	0	0	4
2009-11-11 00:00:00.000	0	0	5	1183
2009-11-11 00:00:00.000	0	4	0	43
2009-11-12 00:00:00.000	3	0	0	4
2009-11-12 00:00:00.000	0	0	5	1726
2009-11-12 00:00:00.000	0	4	0	61
2009-11-13 00:00:00.000	0	0	5	3524
2009-11-13 00:00:00.000	0	4	0	50
2009-11-14 00:00:00.000	0	4	0	20
2009-11-14 00:00:00.000	0	0	5	1334
2009-11-15 00:00:00.000	0	4	0	63
2009-11-15 00:00:00.000	0	0	5	3118
2009-11-15 00:00:00.000	3	0	0	2
2009-11-16 00:00:00.000	0	0	5	2539
2009-11-16 00:00:00.000	3	0	0	6
2009-11-16 00:00:00.000	0	4	0	20
2009-11-17 00:00:00.000	0	4	0	48
2009-11-17 00:00:00.000	0	0	5	4930
2009-11-17 00:00:00.000	3	0	0	5
2009-11-18 00:00:00.000	0	4	0	51
2009-11-18 00:00:00.000	0	0	5	3802
2009-11-18 00:00:00.000	3	0	0	1
2009-11-19 00:00:00.000	0	4	0	84
2009-11-19 00:00:00.000	0	0	5	4978
2009-11-20 00:00:00.000	0	4	0	106
2009-11-20 00:00:00.000	0	0	5	6130
2009-11-20 00:00:00.000	3	0	0	3
2009-11-21 00:00:00.000	3	0	0	4
2009-11-21 00:00:00.000	0	0	5	2732
2009-11-21 00:00:00.000	0	4	0	320
2009-11-22 00:00:00.000	0	0	5	2202
2009-11-22 00:00:00.000	3	0	0	8
2009-11-22 00:00:00.000	0	4	0	374
2009-11-23 00:00:00.000	0	0	5	2928
2009-11-23 00:00:00.000	3	0	0	7
2009-11-23 00:00:00.000	0	4	0	780
2009-11-24 00:00:00.000	0	4	0	418
2009-11-24 00:00:00.000	3	0	0	4
2009-11-24 00:00:00.000	0	0	5	5370
2009-11-25 00:00:00.000	0	0	5	4324
2009-11-25 00:00:00.000	0	4	0	324
2009-11-26 00:00:00.000	0	4	0	1
2009-11-26 00:00:00.000	0	0	5	4720
2009-11-27 00:00:00.000	3	0	0	7
2009-11-27 00:00:00.000	0	4	0	585
2009-11-27 00:00:00.000	0	0	5	4685
2009-11-28 00:00:00.000	0	0	5	3967
2009-11-29 00:00:00.000	0	0	5	1340
нужно, чтобы вместо 3,4,5 выводилось количество записей с данным co.State_ID.
т.е. вместо например calc=case when co.State_ID=6 then 4 else 0 end, выводилось не 4, а количество записей с co.State_ID=6 и условием h.StartDate>='20091101' and h.StartDate<'20091130'

И чтобы все это было в одной строке. Т.е. 1 день = 1 запись и в ней соответственно количество нужных co.State_ID.
Что то не пойму как это сделать.
Заранее спасибо.
30 ноя 09, 10:22    [7994984]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с case when  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Кардашев
выводилось не 4, а количество записей с co.State_ID=6
1)
sum(case when co.State_ID=6 then 1 else 0 end)
2) co.State_ID убрать из group by
дальше сами
30 ноя 09, 10:31    [7995039]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с case when  [new]
Кардашев
Member [заблокирован]

Откуда: ыть-ыть
Сообщений: 1842
Паганель,

спасибо!
30 ноя 09, 10:40    [7995095]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить