分组依据中的SQL Server案例声明

时间:2014-11-28 16:14:22

标签: 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)

2 个答案:

答案 0 :(得分: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 

答案 1 :(得分: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
相关问题