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

Откуда:
Сообщений: 38
Здравствуйте.
Подскажите пожалуйста, как сделать группировку по дате, в которой сутки начинаются с 23:00 ?
Например

date |value
01.01.2013 23:40 |1
02.01.2013 23:05 |1
03.01.2013 10:40 |1
03.01.2013 2:40 |1

должно получится
date |value
02.01.2013 0:00 |1
03.01.2013 0:00 |3
3 фев 13, 16:54    [13868465]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дате?  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
так?
;with data as (
  select * from (values 
  (cast('01.01.2013 23:40' as datetime),1),('02.01.2013 23:05',1),('03.01.2013 10:40',1),('03.01.2013 2:40',1)
  )tmp (dattim,val))
select cast(dateadd(HOUR,1,dattim) as date), count(*)
from data
group by cast(dateadd(HOUR,1,dattim) as date)
3 фев 13, 17:18    [13868520]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дате?  [new]
iap
Member

Откуда: Москва
Сообщений: 47085
DECLARE @T TABLE(D DATETIME, V INT);
INSERT @T(D,V)VALUES
 ('20130101 23:40:00',1)
,('20130102 23:05:00',1)
,('20130103 10:40:00',1)
,('20130103 02:40:00',1);

SELECT CAST(DATEADD(HOUR,1,D) AS DATE) D, SUM(V) V
FROM @T
GROUP BY CAST(DATEADD(HOUR,1,D) AS DATE);
3 фев 13, 17:23    [13868529]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дате?  [new]
iap
Member

Откуда: Москва
Сообщений: 47085
Cygapb-007,

упс! Долго писал. Отвлёкся...
3 фев 13, 17:24    [13868532]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дате?  [new]
cclord
Member

Откуда:
Сообщений: 38
Спасибо большое!
4 фев 13, 19:30    [13874388]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить