0
我有列日期和順序的表。我想將一個名爲Batch的列添加到此表中,該列將填充如下:對於每個日期,我們從第一個訂單開始,並將每個兩個訂單分組在一個批次中。值分配給一列基於其他列的值在同一個表
這意味着對於本例中的Date = 1的記錄(前4條記錄),前兩條記錄(Order = 10和Order = 30)將具有批號:Batch = 1,接下來的兩條記錄訂單= 80和訂單= 110)將具有批= 2,依此類推。
如果最後剩餘記錄的數量小於批量大小(本例中爲2),則 剩餘訂單將具有單獨的批次編號,如下例所示:編號與日期記錄= 2爲奇數,那麼最後一個記錄(5條記錄)將有批量= 3
Date Order
-----------
1 10
1 30
1 80
1 110
2 20
2 30
2 50
2 70
2 120
3 90
Date Order Batch
------------------
1 10 1
1 30 1
1 80 2
1 110 2
2 20 1
2 30 1
2 50 2
2 70 2
2 120 3
3 90 1
感謝。有用。 – Matin
對不起,最基本的問題。爲什麼會出現,當我運行此查詢「單行子查詢返回多個行」的錯誤消息?'更新mytable的組批=(選擇 TRUNC((ROW_NUMBER()OVER(由訂單id dateid順序分區)+1)/2)from mytable'); – Matin
因爲您在內部查詢中選擇了該表的所有記錄。您只想爲每個更新記錄選擇一條記錄。您需要在內部選擇中將where子句限制爲更新記錄的關鍵字。 –