我正在研究一份试图将这一年分解为4季度的SQL报告。并且要避免必须根据年份运行不同的脚本,我试图让它从一个拉出来。所以我试图做的是在where子句中有一个CASE语句,它将确定一年中的哪个季度告诉它x日期需要在日期y和z之间。这导致了许多语法错误,我无法找到它。如果有可能的话,你们能看看并让我知道吗?
`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 :(得分:1)
and datepart(quarter, s.actual_arrival) = datepart(quarter, getdate()) and
year(s.actual_arrival) = year(getdate())