2014-11-28 18 views
0

Мне нужно получить данные по часам или по дню в хранимой процедуре SQL Server.Заявление о выполнении SQL Server в группе

Чтобы получить данные по часам, я бы использовал Datepart(hh, Datecolumn), и для того, чтобы получить пополудни, я бы использовал Datepart(D, Datecolumn).

Я использую случай заявление как

@Hourly = 1 then Datepart(hh, Datecolumn) Else Datepart(D, Datecolumn) 

, но я получаю сообщение об ошибке, как Datecolumn не присутствует в Group by пункте

Может кто-нибудь подскажет, как я могу справиться с этим без написания двух отдельных блоков, как

If @Hourly=1 
    Select Datepart(hh, Datecolumn) 
    from Table 
    Group by Datepart(hh, Datecolumn) 
Else 
    Select Datepart(D,Datecolumn) 
    from Table 
    Group by Datepart(D, Datecolumn) 
+0

Не могли бы вы разместить всю инструкцию SQL? –

+0

Какая версия SQL Server – Fred

ответ

1

Попробуйте использовать Case Statement примерно в Group by

SELECT CASE 
      WHEN @Hourly = 1 THEN Datepart(Hour, Datecolumn) 
      ELSE Datepart(Day, Datecolumn) 
      END 
FROM Table 
GROUP BY CASE 
      WHEN @Hourly = 1 THEN Datepart(Hour, Datecolumn) 
      ELSE Datepart(Day, Datecolumn) 
      END 
0
DECLARE @Hourly BIT =1 

SELECT CASE WHEN @Hourly=1 THEN Datepart(hh,Datecolumn) ELSE Datepart(D,Datecolumn) END 
FROM TableName 
GROUP BY CASE WHEN @Hourly=1 THEN Datepart(hh,Datecolumn) ELSE Datepart(D,Datecolumn) END 
Смежные вопросы