2014-10-01 60 views
0

所以基本上我有一個看起來像這樣的表:手動添加一個日期(月)列查詢在SQL

SalesPerson Target 
John   50000.00 
Bill   75000.00 
Jake   40000.00 

我想添加一個新列,這將使我的查詢是這樣的:

SalesPerson Target  Month 
John   50000.00 01/01/14 
Bill   75000.00 01/01/14 
Jake   40000.00 01/01/14 
John   50000.00 02/01/14 
Bill   75000.00 02/01/14 
Jake   40000.00 02/01/14 

等等....顯然,目標是一個月的價值。目的是在Tableau的透視圖中使用。

月份字段需要是應該很容易的日期時間。唯一想到的是手動做這樣的事情:

Convert(datetime, '2014-01-01 00:00:000') as 'MONTH' 

然後再做11次,每次都使用UNION。這看起來像很多文字和時間。我希望有一個更簡單的方法。

在此先感謝您的幫助!

+0

有什麼問題,乘以你的表中的行數? – Kritner 2014-10-01 16:39:24

回答

4

這是一個奇怪的場景,爲什麼你需要重複每個月的每張桌子的價值?這就是說,這是做這件事:

SELECT A.*, 
     DATEADD(MONTH,B.number,'20140101') AS [Month] 
FROM YourTable A 
CROSS JOIN (SELECT * 
      FROM master.dbo.spt_values 
      WHERE type = 'P' 
      AND number BETWEEN 0 AND 11) B 

請注意,這是由12

+0

是的,數據庫的安裝方式太可怕了。這些每月的價值就像你看到的那樣在表格中輸入一次。我需要將它們彙總在一個圖表中。嘗試你的答案,並會回報......哦,但要回答你的問題,我不能將這個添加到我的數據透視表沒有日期字段。 – user3486773 2014-10-01 16:45:07

+1

這樣做了!比我的想法快得多,我也不可能自己想出來。現在我要研究這個並試圖理解它爲什麼起作用。 – user3486773 2014-10-01 16:49:59

+0

@ user3486773很高興幫助 – Lamak 2014-10-01 16:52:38