背景
一意の行 ID、OrderNumber、guestCount などの情報を含む一時テーブルがあります。このテーブルには RowID と OrderNumber が既に存在しており、各 orderNumber の欠落している guestCount を埋めるために新しいクエリを実行しています。次に、この情報で一時テーブルを更新したいと思います。
例
私が現在持っているものは、RowID のみが一意であるため、同じ OrderNumber を持つ複数のアイテムが存在する可能性があることを意味します。
RowID | OrderNumber | guestCount
1 | 30001 | 0
2 | 30002 | 0
3 | 30002 | 0
4 | 30003 | 0
私のクエリは次のテーブルを返し、orderNumber ごとに 1 つの合計ゲスト数のみを返します。
OrderNumber | guestCount
30001 | 3
30002 | 10
30003 | 5
最終的なテーブルは次のようになります。
RowID | OrderNumber | guestCount
1 | 30001 | 3
2 | 30002 | 10
3 | 30002 | 0
4 | 30003 | 5
orderNumber ごとに 1 つのエントリ (どちらでも構いません) を更新することにのみ関心がありますが、現在のロジックではエラーが発生しています。
UPDATE temp
SET temp.guestCount = cc.guestCount
FROM( SELECT OrderNumber, guestCount
FROM (SELECT OrderNumber, guestCount, RowID = MIN(RowID)
FROM #tempTable
GROUP BY RowID, OrderNumber, guestCount) t)temp
INNER JOIN queryTable q ON temp.OrderNumber = q.OrderNumber
このロジックがこれを行う有効な方法であるかどうかはわかりませんが、集計関数と GROUP 関数を使用しているため、更新でエラーが発生することはわかっています。この操作を別の方法で行う方法はありますか?