У меня есть простой запрос SQL с предложениями GROUP BY, HAVING и ORDER BY. Предложение HAVING имеет некоторые поля, которые я не хочу в GROUP BY, возможно ли это? Потому что мне приходится группировать данные ежечасно, и у меня есть поле даты в HAVING, поэтому группировка не работает должным образом. Код:группа по колонке, не присутствующей в заключении
alter procedure [dbo].[sp_metadata_inflow]
@grp_name varchar(40) , @subgrp_name varchar(40)
as
begin
declare @i as int , @j as int,@k as int,@d as datetime , @m as datetime,@y as datetime;
set @d = datepart(day,'2012-12-13 10:54:55.000');
set @m = datepart(month,'2012-12-13 10:54:55.000');
set @y = datepart(YEAR,'2012-12-13 10:54:55.000');
set @i = 1;
set @j = @i - 1;
while (@i <=24)
begin
(SELECT top 5 @i,
ContactReason,
@grp_name,
@subgrp_name,
COUNT(*)
FROM [ISRM].[dbo].[ITSM01ISRM]
GROUP BY ContactReason,datepart(day,CreatedDate),CurrentGroup,CurrentSubGroup
HAVING (
datepart(day,CreatedDate)= @d AND datepart(MONTH,CreatedDate)= @m
AND datepart(year,CreatedDate) = @y AND datepart(hour,CreatedDate) <= @i
AND datepart(hour,CreatedDate) >[email protected]
)
AND (CurrentGroup = @grp_name) AND (CurrentSubGroup = @subgrp_name)
);
set @i = @i + 1;
set @j = @i -1;
end
end
go
Можете ли вы объяснить ваш запрос? Я имею в виду то, что вы хотите сделать, используя запрос в действительности? – Dhwani
Итак, я хочу получить счет (*), основанный на контакте Reason (group by), за каждый час дня ... Надеюсь, что это имеет смысл, Мой единственный вопрос - как я могу получить его, не создавая CreateDate в group by by – user2042493
В MySQL (хотя и не стандартном SQL) есть столбцы в предложении HAVING, которые не входят в GROUP BY. См. Http://dev.mysql.com/doc/refman/4.1/en/group-by-hidden-columns.html – GreyBeardedGeek