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

Откуда:
Сообщений: 100
SELECT @@VERSION
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86)


Есть вот такой запрос:
SET DATEFIRST 1 -- Первый день недели - понедельник
SELECT 
	CG.ID								AS Код,
	CG.Name								AS Наименование,
	DATEPART(dw,DT)							AS Период,
	CAST(SUM(R12) AS varchar(25))					AS Сумма,
	COUNT(DISTINCT R6)						AS кЧеков,
	COUNT(R6)							AS кПозиций,
	COUNT(DISTINCT DATEPART(dw,DT))					AS кДней
FROM 
	dbo.Report AS R
LEFT JOIN
	dbo.Cash AS C ON C.ID = R.R5
LEFT JOIN
	dbo.CashGroup AS CG ON C.CashGroupID = CG.ID
WHERE 
	R4 IN (1,11,2,12) 
	AND DT >= '20091005 00:00:00' AND DT <= '20091014 00:00:00'
GROUP BY
	CG.ID,CG.Name,DATEPART(dw,DT)
ORDER BY
	CAST(CG.ID AS INT),DATEPART(dw,DT)
В колонку "кДней" надо получить количество дней по дням недели. В таком варианте запрос возвращает везде 1, но в данной выборке понедельников и вторников 2 (5,12 и 6,13 соответственно).
5 ноя 09, 10:56    [7884174]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дням недели, подсчет количества дней  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
На каждой строке - одно конкретное значение DATEPART(dw,DT), поскольку эта функция стоит в списке GROUP BY
Это я Вам и без COUNT(DISTINCT DATEPART(dw,DT)) скажу!
5 ноя 09, 11:04    [7884232]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дням недели, подсчет количества дней  [new]
Anddros
Member

Откуда:
Сообщений: 1077
count(distinct datediff(dd,0,DT))
5 ноя 09, 11:08    [7884261]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по дням недели, подсчет количества дней  [new]
zenik
Member

Откуда:
Сообщений: 100
iap
На каждой строке - одно конкретное значение DATEPART(dw,DT), поскольку эта функция стоит в списке GROUP BY
Это я Вам и без COUNT(DISTINCT DATEPART(dw,DT)) скажу!

Не смешно. Я и спрашивал, что поставить вместо "COUNT(DISTINCT DATEPART(dw,DT))".
Anddros
count(distinct datediff(dd,0,DT))

Спасибо. Оно самое!!!
5 ноя 09, 11:13    [7884300]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить