【发布时间】:2021-02-22 22:57:56
【问题描述】:
所以我尝试用两个派生表创建这个 CTE。我的第一个派生表将显示 500 范围内的帐号、帐号描述。 CTE 中的第二个派生表 - 应列出发票总数大于 1000 的帐号、发票总数和发票 ID。
现在我开始分别创建这两个表,以确保我知道自己在做什么。他们是这样工作的:
SELECT AccountNo,
AccountDescription
FROM Accounts
WHERE AccountNo BETWEEN 500 and 599
SELECT Accounts.AccountNo,
Invoices.InvoiceTotal,
Invoices.InvoiceID
FROM Accounts
JOIN InvoiceLineItems
ON Accounts.AccountNo = InvoiceLineItems.AccountNo
JOIN Invoices
ON InvoiceLineItems.InvoiceID = Invoices.InvoiceID
WHERE Invoices.InvoiceTotal >= 1000
现在,当我尝试将它们变成 CTE 时,我的最佳尝试如下所示:
WITH Accounts500to599 AS
(SELECT AccountNo,
AccountDescription
FROM Accounts
WHERE AccountNo BETWEEN 500 and 599
ORDER BY Accounts.AccountNo),
InvoicesAbove1000 AS
(SELECT Accounts.AccountNo,
Invoices.InvoiceTotal,
Invoices.InvoiceID
FROM Accounts
JOIN InvoiceLineItems
ON Accounts.AccountNo = InvoiceLineItems.AccountNo
JOIN Invoices
ON InvoiceLineItems.InvoiceID = Invoices.InvoiceID
WHERE Invoices.InvoiceTotal >= 1000
ORDER BY Accounts.AccountNo)
现在我的最终目标是显示发票大于平均发票总额的帐户,这应该很简单,但在创建这些 CTE 时我还有很多东西要学。
任何建议将不胜感激。谢谢。
【问题讨论】:
标签: sql sql-server common-table-expression derived-table