2015-04-23 77 views
-1

我如何自動生成表至12個月這樣的:自動生成12個月

tbl_name  
    1 
    2 
    3 
    4 
    5 
    6 
    7 
    8 
    9 
    10 
    11 
    12 

這裏是我做了什麼:

tbl_monthtableA將顯示1

SELECT tbl_month FROM tableA WHERE type='Settings' and code='M' 
+1

請標記數據庫引擎名稱。 –

+0

你是否想要從1到12生成數字呢? – Rocketq

+0

是,使用SELECT語句從表A和tableB的 – AutoX

回答

1

,如果你想從1到12的數字產生那麼試試這個:

;WITH tableA 
    AS (SELECT 1 [MM] 
     UNION ALL 
     SELECT [MM] + 1 
     FROM tableA 
     WHERE [MM] < 12) 
SELECT * 
FROM tableA 

此外,您可以UNION /與任何其他表加入這個。 在許多情況下,例如,你想選擇的行已在tableB缺失(在一個序列):

;WITH tableA 
    AS (SELECT 1 [MM] 
     UNION ALL 
     SELECT [MM] + 1 
     FROM tableA 
     WHERE [MM] < 12) 
SELECT * 
FROM tableA 
     LEFT JOIN tableB 
       ON tableA.MM = tableB.MM 

這將顯示爲產品,不能在tableB這幾個月也行。

+0

酷!有用! 謝謝! – AutoX

+0

這是一種產生數字的廣義方式。也請查看@Giorgi的回答。 –

3

如果你的任務就是產生個月,然後你可以這樣做簡單,如:

select m 
from (values(1),(2),...(12)) t(m) 

如果你想離開加盟則:

select * 
from (values(1),(2),...(12)) t(m) 
left join TableA a on t.m = a.m 
+0

不錯,謝謝你的分享。 – AutoX