日期栏中有数据如:
' 2014-03-01',' 2014-05-01',' 2014-07-01' ...
我希望与IF条款有所不同。
例如,如果日期是在'年 - 07-01' 〜'(年+ 1)-06-30',然后返回YEAR,否则返回YEAR-1。
例如,如果日期列的数据如下:
' 2000-06-01',' 2000-07-01',' 2005-07-01',' 2005-08- 01',' 2008-07-01'
我想得到1999年',' 2000',' 2005',' 2008'
我在想
SELECT (
IF t.DATE IN YEAR(t.DATE) + '-07-01' AND YEAR(t.DATE)+1 + '-06-30'
THEN YEAR(t.DATE) ELSE YEAR(t.DATE)+1 )
FROM THE_TABLE t WHERE PRIMARY_KEY = 123;
但我不知道如何在SQL Server中正确编写它。
答案 0 :(得分:2)
在我看来,您正在根据截至6月30日的财政年度开始计算并开始7/1。
试试这个:
select distinct
case when Month(t.DATE) >=7 then Year(t.DATE) else Year(t.DATE)-1 end as FiscalYear
from THE_TABLE t
order by FiscalYear desc
答案 1 :(得分:0)
更好的方法是创建和使用日历表。它不仅更容易使用,而且可以在不同年份灵活使用。
看看这篇文章。 http://www.sqlservercentral.com/articles/T-SQL/70482/
答案 2 :(得分:0)
试试这个
SELECT CASE WHEN CAST(YEAR(t.DATE) + '-07-01' AS DATE) AND CAST((YEAR(t.DATE)+1) + '-06-30' AS DATE)
THEN YEAR(t.DATE)
ELSE YEAR(t.DATE)+1
END AS YearValue
FROM THE_TABLE t
WHERE PRIMARY_KEY = 123