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

Откуда:
Сообщений: 113
Задача.
Есть две смены первая начинается с 07:00 до 19:00 , вторая с 19:00 по 07:00
Нужно сгруппировать по дате в формате dd.mm.yyyy c условием если во вторую смену есть значения, а время с 00:00 по 07:00 суммировать значения, но в строке дата должна быть дата смены до 00:00
CREATE TABLE #tmpCities
(DateT DATETIME,
Value int);

INSERT INTO #tmpCities

VALUES 
('2019-04-02 12:00:00.000', 4),    --1 смена
('2019-04-02 15:00:00.000', 2),   -- 1 смена
('2019-04-02 19:00:00.000', 10),  --2 смена
('2019-04-02 21:00:00.000', 10),  --2 смена
('2019-04-03 00:00:00.000', 5),    --2 смена
('2019-04-03 03:00:00.000', 3)     --2 смена

SELECT * FROM #tmpCities

DROP TABLE #tmpCities


На выходе должно получиться
Date Value
02.04.2019 6
02.04.2019 28
5 апр 19, 15:08    [21854116]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дате с условием  [new]
Владислав Колосов
Member

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

напишите CASE для условия группировки.
5 апр 19, 15:35    [21854147]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дате с условием  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
select
 min(b.d), sum(a.Value)
from
 #tmpCities a cross apply
 (select cast(DateT as date), (datediff(hour, '1900', DateT) - 7) / 12) b(d, s)
group by
 b.s
order by
 min(b.d), b.s;
5 апр 19, 15:36    [21854149]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дате с условием  [new]
bamper78
Member

Откуда:
Сообщений: 113
Владислав Колосов,
Не получается у меня..
5 апр 19, 15:46    [21854166]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дате с условием  [new]
bamper78
Member

Откуда:
Сообщений: 113
invm,
такой результат я достигаю, нужно именно
Date Value
02.04.2019 6
02.04.2019 28
5 апр 19, 15:48    [21854172]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дате с условием  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
bamper78
нужно именно
Date Value
02.04.2019 6
02.04.2019 28
Предложенный запрос дает как раз такой результат.
5 апр 19, 16:03    [21854208]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дате с условием  [new]
bamper78
Member

Откуда:
Сообщений: 113
invm,
а мне выдает
(Отсутствует имя столбца) (Отсутствует имя столбца)
2019-02-04 6
2019-02-04 20
2019-03-04 8
5 апр 19, 16:21    [21854232]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дате с условием  [new]
invm
Member

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

Либо исправьте в скрипте формат даты на независимый от языка, либо выполняйте с set language english.
5 апр 19, 16:49    [21854267]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дате с условием  [new]
Владислав Колосов
Member

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

Вам еще потребуется колонка с номером смены на выходе запроса.
5 апр 19, 17:19    [21854290]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дате с условием  [new]
bamper78
Member

Откуда:
Сообщений: 113
invm,
Спасибо, конструкция работает.
7 апр 19, 21:09    [21855287]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить