我從下表開始:使用查詢FO這個answerROW_NUMBER了分區,找到最大Rn值
+---+---------+----------+----------+-------------+----+
| 1 | OrderNO | PartCode | Quantity | DateEntered | rn |
| 2 | 2144 | 44917 | 100 | 40773 | 1 |
| 3 | 7235 | 11762 | 5 | 40773 | 1 |
| 4 | 9999 | 60657 | 100 | 40773 | 1 |
| 5 | 9999 | 60657 | 90 | 40774 | 2 |
+---+---------+----------+----------+-------------+----+
:
+---+-----+---------+----------+----------+-------------+
| 1 | ID | OrderNO | PartCode | Quantity | DateEntered |
| 2 | 417 | 2144 | 44917 | 100 | 40773 |
| 3 | 418 | 7235 | 11762 | 5 | 40773 |
| 4 | 419 | 9999 | 60657 | 100 | 40773 |
| 5 | 420 | 9999 | 60657 | 90 | 40774 |
+---+-----+---------+----------+----------+-------------+
了這一點。
select OrderNO,PartCode,Quantity,row_number() over(partition by OrderNO order by DateEntered desc) as rn
from YourTable) as T
現在,我想添加一個字段「rn_max」,shich是每個OrderNO的最大「RN」,並得到以下結果:
+---+---------+----------+----------+-------------+----+--------+
| 1 | OrderNO | PartCode | Quantity | DateEntered | rn | rn_max |
| 2 | 2144 | 44917 | 100 | 40773 | 1 | 1 |
| 3 | 7235 | 11762 | 5 | 40773 | 1 | 1 |
| 4 | 9999 | 60657 | 100 | 40773 | 1 | 2 |
| 5 | 9999 | 60657 | 90 | 40774 | 2 | 2 |
+---+---------+----------+----------+-------------+----+--------+
我能得到這個結果計算每個訂單號的最大數量與查詢
SELECT OrderNO,MAX(rn) AS 'rn_max'
FROM (
select OrderNO,PartCode,Quantity,row_number() over(partition by OrderNO order by DateEntered desc) as rn
from YourTable
) T
Group by OrderNO
然後使用來自YourTable的左連接。 是否有最短的方法來計算具有相同的OderNo的行?我試圖在查詢中添加row_number() over(partition by OrderNO) as rn_max
,但我需要編寫一個order by子句。
看起來你會更好使用COUNT(*)OVER(PARTITION BY OrderNO) –