2013-08-28 155 views
0

我正在SQL Server 2008 R2中创建存储过程。已经得到了SELECT和所有的事情,但有一些问题结合我的datepart与Dateadd和getdate。事情是我想在查询中像这样展示它。SQL Server与getdate和dateadd结合datepart

2013-06 2013年7月2013-08

所以我尝试使用此代码,但我不断收到无效语法...

and Datepart(yy, Column) = 2013 

但我不希望它被硬编码,因为使用该系统的人员应该每个月都能打印出来。这就是为什么我认为getdate-1

DATEPART(MM,DATEADD(MM,-1 GETDATE()) 

我想结合硬编码并将其更改为较低的一个。 SELECT代码目前看起来像这样。

INSERT INTO #EXCEL(COL1,COL2,COL3) 
SELECT SUM (AVERAGE)/COUNT DISTINCT(TABLE.COLUMN) 
FROM TABLE 
INNER JOIN TABLE1 ON TABLE2.COLUMN = BLA BLA 
WHERE SOMETHING = X 
AND DATEPART(YY,COLUMNDATE) = 2013 
AND DATEPART(MM,COLUMNDATE) = 8 

我想使用我的getdate组合,但我不断收到语法错误。

+0

你的错误是什么?我假设你在'DATEPART(MM,DATEADD(MM,-1 GETDATE())''中错过逗号,在-1之后? –

回答

2

尝试这一个 -

--SELECT SUM(AVERAGE)/COUNT(DISTINCT t.[COLUMN]) 
--FROM dbo.[TABLE] t 
--JOIN dbo.TABLE1 t2 ON t2.[COLUMN] = 'BLA BLA...' 
--WHERE SOMETHING = X 
    AND YEAR(COLUMNDATE) = YEAR(GETDATE()) 
    AND MONTH(COLUMNDATE) = MONTH(GETDATE()) 
+0

在上面发布了我的答案,事情是我希望它在统计信息中向后计数。答案 :) – SterlinkArcher

1

因此,这是为你们谁有相同烦恼的答案。

AND DATEPART(YY,COLUMNDATE) = DATEPART(YY,DATEADD(MM, -1, GETDATE()))