请考虑以下示例:
CREATE VIEW VW_YearlySales
AS
SELECT 2011 AS YearNo, ProductID, SUM(Amount) FROM InvoiceTable2011
UNION ALL
SELECT 2012 AS YearNo, ProductID, SUM(Amount) FROM InvoiceTable2012
UNION ALL
SELECT 2013 AS YearNo, ProductID, SUM(Amount) FROM InvoiceTable2013
GO
Run Code Online (Sandbox Code Playgroud)
在InvoiceTable2013实际上并不存在并记录2013年第一发票时,我不想现在就创建它,它会自动创建.
谁能帮助我如何指定一个条件来验证表的存在UNION ALL?
非常感谢您的帮助.
不,据我所知,这是不可能的,你必须使用存储过程。在存储过程中,您可以验证表的存在性,并且根据该表的存在性,您可以更改 SQL。
编辑:
CREATE PROCEDURE GetYearlySales
AS
IF (EXISTS (SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'InvoiceTable2013'))
BEGIN
SELECT 2011 AS YearNo, ProductID, SUM(Amount) FROM InvoiceTable2011
UNION ALL
SELECT 2012 AS YearNo, ProductID, SUM(Amount) FROM InvoiceTable2012
UNION ALL
SELECT 2013 AS YearNo, ProductID, SUM(Amount) FROM InvoiceTable2013
END
ELSE
BEGIN
SELECT 2011 AS YearNo, ProductID, SUM(Amount) FROM InvoiceTable2011
UNION ALL
SELECT 2012 AS YearNo, ProductID, SUM(Amount) FROM InvoiceTable2012
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22094 次 |
| 最近记录: |