我试图构建一个查询,它将映射两列,一列是表中的日期,第二列是别名,以显示日期的季度和财务年度。4 e! Y1 O; m( Y8 V6 Y
不幸的是,我还不够SQL知识知道从哪里开始。我知道我会用组合来做到这一点getdate(),并dateadd(MONTH,,)但不,我已经接近工作了。 ) M, [3 h% W* y2 {更复杂的是,澳大利亚的财政年度从7月1日至6月30日开始,因此2012年第一季度将从2012年7月1日开始。) C2 a3 r* H7 C9 b% p5 b
我可以在没有声明的情况下做到这一点,但我宁愿在声明中使用它,因为它将在声明中使用SSRS报告和C#在应用程序中使用会使维护非常容易。 1 X6 H% [+ F+ ]$ M3 x' } # d: i- G2 P$ f3 n) s0 z, h 解决方案: 4 y3 z9 g i) }6 {/ A$ K
该工作:% b$ n3 `1 s; I6 M& {. q9 M
SELECT MyDate, CASE WHEN MONTH(MyDate) BETWEEN 1 AND 3 THEN convert(char(4),YEAR(MyDate) - 1) Q WHEN MONTH(MyDate) BETWEEN 4 AND 6 THEN convert(char(4),YEAR(MyDate) - 1) Q4' WHEN MONTH(MyDate) BETWEEN 7 AND 9 THEN convert(char(4),YEAR(MyDate) - Q WHEN MONTH(MyDate) BETWEEN 10 AND 12 THEN convert(char(4),YEAR(MyDate) - Q2' END AS QuarterFROM MyTable输出:- 4 M0 G+ b$ I# Y8 a6 a* i% ]& v jMyDate Quarter---------- --------2011-01-01 "2010Q3"2011-04-01 "2010Q4"2011-07-01 "2011Q1"2011-10-01 "2011Q2"