我試圖使用以下CTE查詢在結果欄位中計算參考先前結果值的值:
我試圖使用以下CTE查詢在結果欄位中計算參考先前結果值的值。
WITH cteA (N, val1) AS (
SELECT 1, 5.1 UNION
SELECT 2, 6.5 UNION
SELECT 3, 7.5 UNION
SELECT 4, 4.6 UNION
SELECT 5, 3.2AS (
SELECT *
, val1 / LAG(val1) OVER (ORDER BY N) val2
, (CASE N WHEN 1 THEN 100 END) result[/span
FROM cteA
)
SELECT *
FROM cteB
它在結果欄位上回傳意外的NULL值:
https://i.stack.imgur.com/oeMcO.png
我需要幫助以獲得預期的值而不是NULLs,如下所示:
https://i.stack.imgur.com/XprEW.png
uj5u.com熱心網友回復:
你需要使用遞回cte
with
cteR as
(
SELECT N, val1,
val2 = convert(decimal(20, 4), NULL)。)
result = convert(decimal(20, 4), 100)
FROM cteA
WHERE N = 1
UNION ALL
SELECT a.N, a.val1,
val2 = convert(decimal(20,4), a. val1 / r.val1)。)
result = convert(decimal(20,4), a. val1 / r.val1 * r.result)
FROM cteR r
INNER JOIN cteA a on r。 N = a.N - 1 。
)
SELECT*
FROM cteR
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/323105.html
標籤:
