2014-11-28 2 views
0

SQL Server 저장 프로 시저에서 데이터를 시간별 또는 날로 가져와야합니다.그룹의 SQL Server 사례 정책

시간당 데이터를 얻으려면 Datepart(hh, Datecolumn)을 사용하고 낮 시간을 얻으려면 Datepart(D, Datecolumn)을 사용합니다.

나는

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

같은 경우 문을 사용하고 있지만

처럼 두 개의 분리 된 블록을 작성하지 않고

사람이 내가이 문제를 해결할 수있는 방법을 제안 할 수 Group by 절에 존재하지 Datecolumn으로 오류를 얻고있다

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

Group by

에서 Case Statement을 사용해보세요.
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 
관련 문제