使用SQL Server 2012 我有一个整数格式的DateID字段,表示为YYYYMM 我需要将该字段设置为变量,每次使用脚本时,它都会找到最新的日期/最大DateID值并返回前12个月的所有记录。由于我看到的格式是DateID-100(因为201704 - 100返回201604,即2016年4月)
我的总脚本如下:
SELECT
sum (isnull(Total_Items,0))
FROM [TABLE]
where Field1 = 'A'
and Field2 = 'B'
and Field3 = 'C'
and Field4 = 'D'
and dateid > 201604
> 201604位需要变量!
感谢任何帮助。
答案 0 :(得分:0)
SELECT CAST(CONVERT( VARCHAR(6), DATEADD(YEAR,-1,GETDATE()), 112) AS INT);
,其中
112 specifies yyyymmdd
(ISO)编码
答案 1 :(得分:0)
我倾向于这样做:
select sum(Total_Items)
from [TABLE]
where Field1 = 'A' and
Field2 = 'B' and
Field3 = 'C' and
Field4 = 'D' and
dateid > year(getdate()) * 100 + month(getdate());
逻辑似乎更容易理解。
此外,您不必担心NULL
的{{1}}值。无论如何,聚合函数通常都会忽略它们。如果您想确保SUM()
永不返回SUM()
,那么您需要NULL
。