2013-10-10 61 views
0

我想輸出一樣如下:如何在沒有任何自定義表的情況下迭代最近六個月(包括當前)循環?

enter image description here

目前我使用的表。但我不想在任何表格(除了系統表格)中使用它。可能嗎?

查詢(使用表):

DECLARE @End_date DATETIME 
SET @End_Date = DATEADD(month, -6, GETDATE()) 

SELECT DISTINCT MONTH(S.ACDATE) AS Mon,CONVERT(CHAR(4),S.ACDATE) AS Month_Name, 
    (YEAR(S.ACDATE) % 100) AS Year_No 
    FROM SALES as S 
    WHERE S.ACDATE < DATEADD(month,MONTH(getdate()), 
      DATEADD(year,YEAR(getdate())-1900,0)) 
    AND S.ACDATE >= DATEADD(month,MONTH(@End_Date)-1, 
     DATEADD(year,YEAR(@End_Date)-1900,0)) 
+0

......什麼是你想在這裏解決實際問題?創建一個日曆表?獲取日期範圍?你爲什麼要兩位數的年份? –

回答

2
DECLARE @dt DATE = CONVERT(DATE, '05/03/2013', 101) 

SELECT MONTH (dt) AS Mon, LEFT (DATENAME (mm, dt), 3) AS Month_Name, YEAR (dt) % 1000 AS Year_No 
FROM (
    SELECT DATEADD (mm, -diff, @dt) dt 
    FROM (VALUES(1),(2),(3),(4),(5),(6))t(diff) 
) t 

結果集是:

Mon   Month_Name Year_No 
----------- ---------- ----------- 
4   Apr  13 
3   Mar  13 
2   Feb  13 
1   Jan  13 
12   Dec  12 
11   Nov  12 
+0

日期'05 -03-2013'不適用(日期格式MM/DD/YYYY) – Dhwani

+0

查看更新後的答案。它出什麼問題了? – GriGrim

+0

其實我最近6個月+本月 – Dhwani

相關問題