Sql server 创建视图并选择Top10

Sql server 创建视图并选择Top10,sql-server,Sql Server,所以这个标题非常准确,我想我差不多做到了,这就是我所拥有的 编辑:视图应该选择vendorname列、LastInvoice列(该列是该列中的最新日期)和invoiceTotal列的总和。我希望它只显示前10名的已付款发票总额以及相应的最新发票日期和供应商名称 CREATE VIEW TOP10PAIDInvoices AS SELECT VendorName, MAX(InvoiceDate) AS LastInvoice, SUM(InvoiceTo

所以这个标题非常准确,我想我差不多做到了,这就是我所拥有的

编辑:视图应该选择vendorname列、LastInvoice列(该列是该列中的最新日期)和invoiceTotal列的总和。我希望它只显示前10名的已付款发票总额以及相应的最新发票日期和供应商名称

CREATE VIEW TOP10PAIDInvoices
AS
  SELECT VendorName,
         MAX(InvoiceDate)  AS LastInvoice,
         SUM(InvoiceTotal) AS SumOfInvoices
  FROM   Vendors
         JOIN Invoices
           ON Vendors.VendorID = Invoices.VendorID
  WHERE  (SELECT TOP 10 SumOfInvoices
          FROM   TOP10PAIDInvoices
          GROUP  BY SumOfInvoices
          HAVING SumOfInvoices > 0)
  ORDER  BY SumOfInvoices 

您的语法不正确,部分原因是您的视图定义正在尝试自引用

ORDER BY
与TOP N表达式结合使用时,在视图def中是合法的

CREATE VIEW TOP10PAIDInvoices AS
SELECT TOP 10 VendorName = MAX(VendorName), MAX(InvoiceDate) AS LastInvoice, SUM(InvoiceTotal) AS SumOfInvoices
FROM Vendors JOIN Invoices
ON Vendors.VendorID = Invoices.VendorID
GROUP BY Vendors.VendorID
HAVING SUM(InvoiceTotal) > 0
ORDER BY SUM(InvoiceTotal) DESC;
GO

请描述您遇到的问题,而不仅仅是给我们错误的查询。请解释应该做什么。我不知道递归的
TOP10PAIDInvoices
参考是关于什么的。从我所能看到的我错过了Group By和Go,从来没有听说过Go部分,但我总是在Group By方面遇到麻烦。我确实有一些非常非常接近这一点的东西,就是没有团队的参与。我搜索并发现了另一个关于top10的问题,它显示了嵌套的select语句.GO实际上是SSMS的预处理器批处理命令,从技术上讲不是SQL的一部分。它通常是可选的,但我把它包括在这里是出于习惯,而不是其他任何东西。