2014-04-06 56 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 。 –

相关问题