sql-server – 使用UNION ALL在SQL Server中创建视图

前端之家收集整理的这篇文章主要介绍了sql-server – 使用UNION ALL在SQL Server中创建视图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请考虑以下示例:
CREATE VIEW VW_YearlySales
AS

SELECT 2011 AS YearNo,ProductID,SUM(Amount) FROM InvoiceTable2011
UNION ALL
SELECT 2012 AS YearNo,SUM(Amount) FROM InvoiceTable2012
UNION ALL
SELECT 2013 AS YearNo,SUM(Amount) FROM InvoiceTable2013

GO

InvoiceTable2013实际上并不存在,我现在不想创建它,它将在记录2013年的第一张发票时自动创建.

在执行UNION ALL之前,任何人都可以帮助我如何指定一个条件来验证表的存在吗?

非常感谢您的帮助.

解决方法

正如其他人所说的那样,你无法用视图实现这一点,因为select语句必须引用一组具体的表 – 如果它们中的任何一个表不存在,那么查询将无法执行.

在我看来,你的问题更为根本.显然,概念上应该只有一个InvoiceTable,其中包含不同日期的行.按年分成不同的逻辑表大概是为了优化而做的事情(除非列不同,我非常怀疑).

在这种情况下,partitioning似乎是解决此问题的方法(按年/季/月分区大表是典型的例子).这将允许您在逻辑上具有单个InvoiceTable,但指定sql Server应该在幕后存储数据,就好像它是按年分割的不同表.您可以获得两全其美 – 精确的模型和快速性能 – 这使您的视图定义变得简单.

猜你在找的MsSQL相关文章