2013-06-21 54 views
0

嗨,大家好我有這裏的代碼,其中輸出兩列,1列是1-30,另一個是今天30天前。在視覺工作室的日期之前添加數字

DECLARE @StartDate date 

SELECT @StartDate = GETDATE() 

;WITH cte AS (
SELECT 
       1 AS idx, 
       DATEADD(d,-1,@StartDate) AS idxDate 
UNION ALL 
SELECT idx -1, DATEADD(d,-1,idxDate) 
FROM cte 
WHERE idx >-30 
) 
    SELECT idx DateValue, CONVERT(VARCHAR(10),idxDate,110) DateLabel 
FROM CTE 
OPTION (MAXRECURSION 0) 

它看起來像這樣目前

DateValue DateLabel 
1   06-20-2013 
0   06-19-2013 
-1   06-18-2013 
-2   06-17-2013 
etc.... 

所以不是1和0在一開始應該是-1,我想補充的dateavalue在後面的datelabel看起來像這樣前:

DateValue DateLabel 
-1   06-20-2013, -1 
-2   06-19-2013, -2 
-3   06-18-2013, -3 
-4   06-17-2013, -4 

在此先感謝!

回答

2

你的意思是這樣的:

DECLARE @StartDate date 

SELECT @StartDate = GETDATE(); 

WITH cte AS 
(
    SELECT -1 AS idx, DATEADD(d,-1,@StartDate) AS idxDate 
    UNION ALL 
    SELECT idx -1, DATEADD(d,-1,idxDate) 
    FROM cte 
    WHERE idx >-30 
) 

SELECT idx DateValue, CONVERT(VARCHAR(10),idxDate,110) + ', ' + CAST(idx as nvarchar(max)) DateLabel 
FROM CTE 
OPTION (MAXRECURSION 0) 
+1

O是!非常感謝!希望我可以投票,但需要15個Repts;( – user2493680

0

添加

order by DateValue desc 

到您的查詢的末尾。

0

您只需調整你的最後SELECT一點:

SELECT idx-2 AS DateValue, CONVERT(VARCHAR(10),idxDate,110) +', ' + CAST(idx-2 AS NVARCHAR(10)) DateLabel 
FROM CTE