sql - 使用子句 IF 和 IN 获取值

标签 sql sql-server

日期列中有数据,例如:

'2014-03-01', '2014-05-01', '2014-07-01' ...

我想通过 IF 子句获得不同的年份。

例如,如果日期在 'YEAR-07-01' ~ '(YEAR+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中正确编写它。

最佳答案

在我看来,您正在根据 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

关于sql - 使用子句 IF 和 IN 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24616736/

相关文章:

php - SQL 使用 cast 而不是 int 字段

sql - Groupby排序和单行选择

sql - 序列 ALTER RESTART 不会影响序列的当前值

java - SQL Server JDBC 可信连接身份验证如何工作?

c# - Fluent NHibernate 映射一个返回动态列集的存储过程

SQL 查询到 Concat 输出

mysql - sql mariadb,分区语法错误

sql-server - 带选项的无限循环 CTE(最大递归 0)

sql - 根据先满足条件的行对sql查询中的行进行排序

json - 将嵌套的json数组插入到sql server中的多个表中