Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка количества записей, несколько count-ов по условию / 3 сообщений из 3, страница 1 из 1
19.03.2018, 11:34
    #39616684
unid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка количества записей, несколько count-ов по условию
Здравствуйте уважаемые участники форума.

Есть таблица

ФИО / Дата производства / Дата прихода

Иванов 02.01.17 04.02.18
Иванов 05.02.17 02.05.18
Сидоров 25.02.17 03.03.18
Петров 11.03.17 18.01.18
Сидоров 24.05.17 24.04.18

Запрос в конечным итоге должен выдать уникальные записи, в интервале даты производства с 01.01.17 по 31.06.17 и в интервале даты прихода с 01.01.18 - 31.01.18, 01.02.18 - 28.02.18, 01.03.18-31.03.18, 01.04.18-30.04.18, 01.05.18-31.05.18

Выходная таблица в виде
ФИО / Кол_во (дата прихода 01.01.18-31.01.18) / Кол_во (дата прихода 01.02.18-28.02.18) / Кол_во (дата прихода 01.03.18-31.03.18)

Не могу понять как реализовать несколько count ов с разными условиями в нескольких полях. Подскажите пожалуйста, пути решения.

Спасибо.
...
Рейтинг: 0 / 0
19.03.2018, 11:45
    #39616691
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка количества записей, несколько count-ов по условию
unid,

Код: sql
1.
sum(case When [Дата прихода] between '2018-01-01' and '2018-01-31' Then 1 end) as Kol_201801
...
Рейтинг: 0 / 0
19.03.2018, 11:49
    #39616696
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка количества записей, несколько count-ов по условию
unid,

по хорощему сгенерить таблицу месяцев с названиями и по ней разворачивать

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
DECLARE @T TABLE 
(
	Name	VARCHAR(255),
	F	Date,
	T	Date
)
INSERT INTO @t
VALUES
('Иванов'	,'02 jan 17', '04 feb 18'), 
('Иванов'	,'05 feb 17', '02 may 18'),
('Сидоров'	,'25 feb 17', '03 mar 18'),
('Петров'	,'11 mar 17', '18 jan 18'),
('Сидоров'	,'24 apr 17', '24 apr 18') 

SELECT 
	Name, 
	SUM(CASE WHEN T >= '01 jan 2018' AND T <= '31 jan 2018' THEN 1 ELSE 0 END ) as '01.01.18 - 31.01.2018',
	SUM(CASE WHEN T >= '01 feb 2018' AND T <= '28 feb 2018' THEN 1 ELSE 0 END ) as '01.02.18 - 31.02.2018'
FROM @t
GROUP BY Name
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка количества записей, несколько count-ов по условию / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]