我正在嘗試將資料從我的源表插入到我的目標表中,在目標表中,我有一個名為SaleTo的附加列。
SaleTo = 基于 MAX SaleSequence 的 SaleFrom。
源表示例:
| 銷售編號 | 銷售自 | 銷售順序 |
|---|---|---|
| 1 | 阿拉巴馬州 | 2 |
| 1 | 明尼蘇達州 | 1 |
| 1 | 弗吉尼亞州 | 3 |
目標表示例:
| 銷售編號 | 銷售自 | 銷售順序 | 銷售至 |
|---|---|---|---|
| 1 | 阿拉巴馬州 | 2 | 弗吉尼亞州 |
| 1 | 明尼蘇達州 | 1 | 弗吉尼亞州 |
| 1 | 弗吉尼亞州 | 3 | 弗吉尼亞州 |
我試過的一些代碼:
SELECT DISTINCT a.SaleNo,
MAX(a.SaleSequence ) AS SaleSequence,
b.SaleFrom
FROM SequenceOrderSource a
INNER JOIN SequenceOrderSource b
ON a.SaleNo= b.SaleNo
--WHERE B.SaleFrom IN (SELECT b.SaleFrom FROM SequenceOrderSource HAVING SaleSequence= MAX(SaleSequence))
GROUP BY a.SaleNo, b.SaleFrom
我真的很感激任何幫助。
uj5u.com熱心網友回復:
您可以使用last_value. 默認范圍是RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW您需要明確指定子句。
SELECT SaleNo, SaleSequence, SaleFrom,
last_value(SaleFrom) over(partition by SaleNo order by SaleSequence RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) SaleTo
FROM SequenceOrderSource;
uj5u.com熱心網友回復:
在這種情況下,另一種方法是使用 CROSS APPLY。像這樣的代碼:
SELECT SaleNo, SaleSequence, SaleFrom, OrderData.SaleFrom AS SaleTo
CROSS APPLY (SELECT TOP 1 SaleFrom FROM SequenceOrderSource
ORDER BY SaleSequence DESC) OrderData
FROM SequenceOrderSource;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/345253.html
標籤:sql sql-server 数据库 azure-sql-数据库 数据处理
下一篇:容器內的影像不完全適合
