2014-04-06 55 views
0

我試圖建立一個視圖,這樣我可以寫對一個單一查詢:建立一個視圖來查詢多個表具有相同的列名

FROM Datebase.dbo.[AllQtrs] 

使用SQL Server的「創建視圖」功能,它吐出出如下:

SELECT   
    dbo.[2010 Q3].*, dbo.[2010 Q4].*, 
    dbo.[2011 Q1].*, dbo.[2011 Q2].*, 
    dbo.[2011 Q3].*, dbo.[2011 Q4].*, 
    dbo.[2012 Q1].*, dbo.[2012 Q2].*, 
    dbo.[2012 Q3].*, dbo.[2013 Q2].*, 
    dbo.[2013 Q1].*, dbo.[2012 Q4].*, 
    dbo.[2014 Q1].*, dbo.[2013 Q4].*, 
    dbo.[2013 Q3].*, dbo.[2014 Q2].* 
FROM    
    dbo.[2010 Q3] 
CROSS JOIN 
    dbo.[2010 Q4] 
CROSS JOIN 
    dbo.[2011 Q1] 
CROSS JOIN 
    dbo.[2011 Q2] 
CROSS JOIN 
    dbo.[2011 Q3] 
CROSS JOIN 
    dbo.[2011 Q4] 
CROSS JOIN 
    dbo.[2012 Q1] 
CROSS JOIN 
    dbo.[2012 Q2] 
CROSS JOIN 
    dbo.[2012 Q3] 
CROSS JOIN 
    dbo.[2012 Q4] 
CROSS JOIN 
    dbo.[2013 Q1] 
CROSS JOIN 
    dbo.[2013 Q2] 
CROSS JOIN 
    dbo.[2013 Q3] 
CROSS JOIN 
    dbo.[2013 Q4] 
CROSS JOIN 
    dbo.[2014 Q1] 
CROSS JOIN 
    dbo.[2014 Q2] 

我所有的表具有相同的列名稱/屬性。我收到的錯誤消息是

每個視圖或函數中的列名稱必須是唯一的。列名XY被多次指定。

目標是通過查詢AllQtrs視圖來查詢所有表。任何幫助?

+3

你必須爭取所有列形成的表中選擇列表中給他們唯一的別名。 –

+0

而不是你必須每三個月更換一次的觀點,爲什麼不把所有這些東西放到一個單獨的表中,該表中包含年份編號和季度編號。 –

+0

因爲表格非常大。 – ZJAY

回答

2

您必須手動指定名稱併爲其定義唯一的名稱。這樣你將顯示列。一個例子是

SELECT dbo.[2010 Q3].Column1 AS 2010Q3Column1, 
     dbo.[2010 Q3].Column2 As 2010Q3Column2, 
     dbo.[2010 Q3].Column1 As 2010Q4Column1 
     etc. 

順便說一句,確保CROSS JOIN真的是你想要的東西 - 看起來像你真的想在這裏使用UNION ALLCROSS JOIN將返回所有表中所有行的笛卡爾乘積,即如果每個表中有10行,則它將是10^16條記錄,這在幾十年內肯定不會完成。

隨着UNION ALL它看起來像:

SELECT Column1, Column2 {add here the remaining column names} FROM dbo.[2010 Q3] UNION ALL 
SELECT Column1, Column2 {add here the remaining column names} FROM dbo.[2010 Q4] UNION ALL 
SELECT Column1, Column2 {add here the remaining column names} FROM dbo.[2011 Q1] UNION ALL 
...etc 
+0

謝謝。我更改爲Union All,但未將每列定義爲唯一名稱。我收到了語法錯誤:SELECT dbo。[2010 Q3]。*,dbo。[2010 Q4]。*,dbo。[2011 Q1]。*,dbo。[2011 Q2]。,dbo。[2011 Q3] *,dbo。[2011年第4季度]。*,dbo。[2012年第1季度]。*,dbo。[2012年第2季度]。*,dbo。[2012年第3季度]。, dbo。[2013年第2季度] [2013年第1季度]。*,dbo。[2012年第4季度]。*,dbo。[2014年第1季度]。*,dbo。[2013年第4季度]。*,dbo。[2013年第3季度。 。* FROM dbo。[2010 Q3] UNION ALL dbo。[2010 Q4] UNION ALL – ZJAY

+0

@ZJAY編輯問題並在那裏添加您嘗試使用的所有工具全部 –

+0

@ZJAY我添加了一個示例如何使用UNION ALL 。 –

相關問題