ホーム>source

以下のようなCustomerSalesテーブルがあります。

<前>ウィズウィズ

データに受付番号がありません。したがって、要件は、受付番号の線形番号を生成することです。例えば1から始まり、1ずつ増加します。 特定の受領番号に属するラインアイテムを特定するには、レコードを[Cust]と[Time]でグループ化できます。 [Cust]と[Time]のグループに属するすべてのラインは、MAX(Receipt] +1(次に利用可能なレシート番号)で更新されます。

以下の期待される結果:

<前>ウィズウィズ [RowID], [Cust], [Time], [Article], [Qty], [Amount], [Receipt] 1, C1, 10:10:00, A1, 1, 100, 1 2, C1, 10:10:00, A2, 2, 101, 1 3, C1, 10:10:00, A3, 3, 102, 1 4, C1, 10:10:00, A4, 4, 103, 1 5, C2, 10:10:11, A3, 5, 104, 1 6, C3, 10:20:01, A2, 6, 105, 1 7, C4, 10:20:01, A2, 7, 106, 1 8, C4, 10:20:01, A1, 8, 107, 1 9, C1, 11:11:01, A2, 3, 100, 1 10, C1, 11:11:01, A3, 2, 101, 1
あなたの答え
  • 解決した方法 # 1

    あなたは dense_rank() を使うことができます :

    <前>ウィズウィズ

    データを更新する場合は、更新可能なCTEを使用します。

    <前>ウィズウィズ select t.*, dense_rank() over (order by time, cust) as receipt from t;

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ javascript - 2つの配列からキー値配列を作成する方法