Переключение на Главную Страницу Страницы: 1 2 [3]  ОтправитьПечать
Очень популярная тема (более 25 ответов) затруднения в написании запроса с группировкой по периодам (число прочтений - 5704 )
val
Full Member
***
Отсутствует


Дорогу осиливает идущий

Сообщений: 137
Зарегистрирован: 07. Июля 2006
Re: затруднения в написании запроса с группировкой по периодам
Ответ #30 - 18. Ноября 2011 :: 09:56
Печать  
(29) Начало месяца:
DateAdd(day,-day(Выборка.DateCreated)+1,Выборка.DateCreated)
  
Наверх
 
IP записан
 
JBoy
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 52
Зарегистрирован: 29. Декабря 2010
Re: затруднения в написании запроса с группировкой по периодам
Ответ #31 - 24. Ноября 2011 :: 13:06
Печать  
Вот что у меня получилось
Код
Выбрать все
SELECT
	Выборка.Магаз AS Магазин,
	 RIGHT(CONVERT(CHAR(10), Выборка.Дата,104),7) Группировка1,
	 CONVERT(CHAR(10), Выборка.Дата,104) Группировка2,
	SUM(Выборка.Колич) AS Количество
FROM(
	SELECT
		Т.Маг Магаз,
		A.date AS Дата,
		SUM(Т.КолВходов) AS Колич
		from (	select date = dateadd(Second,(d.number+1)*3600-1,cast((b.number * 0x100) + a.number as datetime))
			from master..spt_values a
			join master..spt_values b
				on (b.number * 0x100) + a.number <= cast(cast('20111124' as datetime) as integer)
				and (b.number * 0x100) + a.number >= cast(cast('20110101' as datetime) as integer)
			join master..spt_values d on a.type = d.type
			where
				a.type = 'p'
				and b.type = 'p'
				and d.type = 'p'
				and d.number <= 23
				and d.number >= 8
			) as A
LEFT JOIN (SELECT
				Магазины.Name Маг,
				convert(char(255),Магазины.id) Айди,
				Выборка.DateCreated ДатаСоб,
				SUM(Выборка.RealIn) КолВходов
			FROM
				server3.Cst.dbo.traffic AS Выборка
			LEFT JOIN server3.Cst.dbo.sensors AS Датчики ON Выборка.sensorid=Датчики.id
			LEFT JOIN server3.Cst.dbo.entries AS Входы ON Датчики.entryid=Входы.id
			LEFT JOIN server3.Cst.dbo.shops AS Магазины ON Входы.shopid=Магазины.id
			WHERE convert(char(255),Магазины.id) = 'B86B9BF6-EB75-42F8-BB88-46C57DD0E4F0'
 OR convert(char(255),Магазины.id) = '6B154715-E083-4EDF-A3D7-D9FA21EF765C'
 OR convert(char(255),Магазины.id) = '9D9AB7E8-41F7-4AA5-8539-09307D1DAF07'
 OR convert(char(255),Магазины.id) = 'F595578C-51FE-4A3B-B823-04BBBC3992DF'
 OR convert(char(255),Магазины.id) = '88C8AE9F-32FF-4C0E-8583-F7B3175BB0C6'
 OR convert(char(255),Магазины.id) = '2EF02E12-65E9-4BB3-B718-AFF8BC6AC75C'
 OR convert(char(255),Магазины.id) = '00BB39CB-B010-422B-8063-6AA71ADF13F4'
 OR convert(char(255),Магазины.id) = '948ED08E-AFFF-4783-9834-EBF5832F2880'
 OR convert(char(255),Магазины.id) = '20048FCC-7AFC-4645-98A5-047078F25730'
 OR convert(char(255),Магазины.id) = 'F0CB6141-F8CB-47D7-92A2-4BB3978FBA17'
 OR convert(char(255),Магазины.id) = '97D23048-0CF2-45E0-941C-DE3087A4FBDB'
 OR convert(char(255),Магазины.id) = 'F93A2B68-CCB6-4F66-9636-B6CD944183A6'
			GROUP BY Магазины.Name, Магазины.id, Выборка.DateCreated
			) AS Т ON YEAR(A.date) = YEAR(Т.ДатаСоб)
					AND MONTH(A.date) = MONTH(Т.ДатаСоб)
					AND DAY(A.date) = DAY(Т.ДатаСоб)
					AND DATEPART(hh, A.date) = DATEPART(hh, Т.ДатаСоб)
group by Т.Маг,A.date) AS Выборка
GROUP BY
	Выборка.Магаз,
	RIGHT(CONVERT(CHAR(10), Выборка.Дата,104),7),
	CONVERT(CHAR(10), Выборка.Дата,104)
ORDER BY
	Выборка.Магаз,
	RIGHT(CONVERT(CHAR(10), Выборка.Дата,104),7),
	CONVERT(CHAR(10), Выборка.Дата,104)
 


вроде все работает, но все равно где то я что то упустил - в группировку по магазинам не все даты попадают ((
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 
ОтправитьПечать