所以这类似于其他学校的问题,我被赋予了代码:SQL脚本创建一个视图,而不是派生表的
USE AP
SELECT VendorName, FirstInvoiceDate, InvoiceTotal
FROM Invoices JOIN
(SELECT VendorID, MIN(InvoiceDate) AS FirstInvoiceDate
FROM Invoices
GROUP BY VendorID) AS FirstInvoice
ON (Invoices.VendorID = FirstInvoice.VendorID AND
Invoices.InvoiceDate = FirstInvoice.FirstInvoiceDate)
JOIN Vendors
ON Invoices.VendorID = Vendors.VendorID
ORDER BY VendorName, FirstInvoiceDate
我需要改变这种创造,而不是派生表我是一个视图思考更多的东西一样
IF NOT EXISTS (SELECT * FROM sys.views
Where name = ‘EarliestInvoiceandTotalVEW’)
CREATE View AS
Select VendorName, FirstInvoiceDate, InvoiceTotal
From Invoices JOIN
(Create VIEW FirstInvoice AS
SELECT VendorID, MIN(InvoiceDate) AS FirstInvoiceDate
From Invoices
Group By VendorID) As FirstInvoice
ON (Invoices.VendorID = FirstInvoice.VendorID AND
Invoices.InvoiceDate = FirstInvoice.FirstInvoiceDate)
JOIN Vendors
ON Invoices.VendorID = Vendors.VendorID
ORDER BY VendorName, FirstInvoiceDate
这将使为了做同样的事情,并检查它是否存在,因此不会重新创建/每次定义。
感谢您对此的任何意见!
我约我把它直接出来的SQL Server,它通常被格式化以及格式道歉......
这是我得到了什么工作:
USE AP
Declare @Create1 varchar(8000)
IF EXISTS (SELECT * FROM sys.views Where sys.views.name = 'EarliestInvoiceandTotalVIEW')
drop view EarliestInvoiceandTotalVIEW;
SET @CREATE1 = 'CREATE View EarliestInvoiceTotalVIEW AS
Select VendorName, FirstInvoiceDate, InvoiceTotal
From Invoices JOIN
(SELECT VendorID, MIN(InvoiceDate) AS FirstInvoiceDate
FROM Invoices
GROUP BY VendorID) AS FirstInvoice
ON (Invoices.VendorID = FirstInvoice.VendorID AND
Invoices.InvoiceDate = FirstInvoice.FirstInvoiceDate)
JOIN Vendors
ON Invoices.VendorID = Vendors.VendorID'
Exec (@CREATE1)
我不得不设置在哪里sys.views.name = ...以及设置一个exec命令,以便创建视图运行'第一'。
你的问题是什么? – Andomar
第二部分为我提供了错误: Msg 102,Level 15,State 1,Line 4 '''附近的语法不正确。 Msg 111,Level 15,State 1,Line 6 'CREATE VIEW'必须是查询批处理中的第一条语句。 Msg 156,Level 15,State 1,Line 9 关键字'Create'附近的语法不正确。 Msg 111,Level 15,State 1,Line 9 'CREATE VIEW'必须是查询批处理中的第一条语句。 Msg 102,Level 15,State 1,Line 12 ')'附近语法不正确。 虽然我一直在研究这个问题,但我可能做错了什么。这是正确的或我在哪里搞乱? –
您没有在'create'中指定视图名称,它应该是'create view [EarliestInvoiceandTotalVEW] --etc。' –