2016-10-24 6 views
0

나는 4 분기로 올해를 세우려고 SQL 보고서 작업 중입니다. 그리고 올해에 따라 다른 스크립트를 사용해야하는 것을 막으려면 모든 것을 하나에서 꺼내려고합니다. 그래서 내가 시도한 것은 where 절에 CASE 문을 가지고 있습니다. CASE 문은 연도의 분기가 x 일이 y와 z 사이 일 필요가 있다고 말합니다. 이로 인해 구문 오류가 많아졌고 어디에서 찾을 수없는 지 알 수 있습니다. 너희들도 한 번 봐봐도 가능할 지 알려주 겠니?SQL 날짜를 때 xthen 때까지 어떻게

`AND s.actual_arrival BETWEEN 
    CASE 
     WHEN MONTH(DATEADD(dd, -1, GETDATE())) < 4 THEN YEAR(DATEADD(dd, -1, GETDATE())) + '-01-01' AND YEAR(DATEADD(dd, -1, GETDATE())) + '03-31 23:59:59' 

    WHEN MONTH(DATEADD(dd, -1, GETDATE())) > 3 AND MONTH(DATEADD(dd, -1, GETDATE())) < 7 THEN YEAR(DATEADD(dd, -1, GETDATE())) + '-04-01' AND YEAR(DATEADD(dd, -1, GETDATE())) + '06-30 23:59:59' 
    WHEN MONTH(DATEADD(dd, -1, GETDATE())) > 6 AND MONTH(DATEADD(dd, -1, GETDATE())) < 10 THEN YEAR(DATEADD(dd, -1, GETDATE())) + '-07-01' AND YEAR(DATEADD(dd, -1, GETDATE())) + '09-31 23:59:59' 
    WHEN MONTH(DATEADD(dd, -1, GETDATE())) > 9 THEN YEAR(DATEADD(dd, -1, GETDATE())) + '-10-01' AND YEAR(DATEADD(dd, -1, GETDATE())) + '12-31 23:59:59' 
END` 
+0

어떤 DBMS를 사용하고 있습니까? –

+0

분명히 SQL Server 코드이기 때문에 SQL Server 질문에 태그를 붙였습니다. –

+0

미시시피 SQL 미안. 그리고 고든에게 감사드립니다. 그 태그를 놓친 것 같습니다. – Ardel

답변

1

흠, 그냥 그렇게하는 것이 더 간단하지 않습니까?

and datepart(quarter, s.actual_arrival) = datepart(quarter, getdate()) and 
    year(s.actual_arrival) = year(getdate()) 
+0

datepart quarter 0_0이 있습니다. 지금은 바보 같아요. 나는 오늘 밤에 코드를 테스트하고 더 이상 문제가 발생하지 않는다면 정확한 질문을 표시 할 것입니다. – Ardel

+1

@Ardel "나는 클럽에 오신 것을 환영합니다"라고 환영합니다. 우리는 재킷, 회원 카드, 토요일 밤 믹서를 가지고 있습니다. –