在查询中包含CTE
问题描述:
我有下面的代码,它完美地工作。在查询中包含CTE
我需要做的是将它包含在查询中,使用CTE的结果作为查询结果中的一列,但我无法找到包含它的方式。 有什么想法吗?
我想实际上是这样的:
select a,
b,
c,
d,
WITH invoicedates AS (
SELECT
ROW_NUMBER() OVER (ORDER BY Inv_Date DESC) AS RowNumber,
inv_Date, INVIT_PARTNO
FROM Invoices join InvoiceItems on invit_invno = inv_no
WHERE invit_partno = stock_no and inv_canind <> 'Y' and inv_date >= DATEADD(yy, -1, getdate())
)
SELECT
AVG(DATEDIFF(DD, O2.Inv_Date, O1.Inv_Date)) AS AverageFrequency
FROM invoicedates O1
LEFT JOIN invoicedates O2
ON O2.RowNumber = O1.RowNumber + 1
从股票那里..........
给予产生ABCD结果的输出
答
你应该能够重新排序你如何使用CTE:
; WITH invoicedates (RowNumber, inv_Date, INVIT_PARTNO) AS (
SELECT
ROW_NUMBER() OVER (ORDER BY Inv_Date DESC) AS RowNumber,
inv_Date, INVIT_PARTNO
FROM Invoices join InvoiceItems on invit_invno = inv_no
WHERE invit_partno = stock_no and inv_canind <> 'Y' and inv_date >= DATEADD(yy, -1, getdate())
)
select a,
b,
c,
d,
AVG(DATEDIFF(DD, O2.Inv_Date, O1.Inv_Date)) AS AverageFrequency
FROM invoicedates O1
LEFT JOIN invoicedates O2
ON O2.RowNumber = O1.RowNumber + 1
是的......但是'AVG()'是一个聚合函数,所以他需要一个'GROU P BY'作为其他栏目。 –
啊,谢谢!我永远不得不回去添加我的GROUP BY。 – Valkyrie
非常感谢 - 完美。我没有意识到我可以像这样分裂它。 –