次のような一時テーブル ( @TempPackages
) があります。
EntryId (PK) PackageId SubProductID SubProductSequence
1 1111 17 3
2 1111 28 4
3 1111 33 1
4 1111 67 5
5 1111 122 2
6 2222 18 4
7 2222 29 5
8 2222 33 9
9 2222 103 7
10 2222 99 11
11 3333 256 5
12 3333 333 6
13 3333 789 3
14 3333 1023 2
15 3333 9845 1
SubProductSequence
各 uniqueの最小/最大値を持つ行を提供するクエリが必要ですPackageId
。上記のテーブルの場合、クエリは次のように返します。
EntryId (PK) PackageId SubProductID SubProductSequence
3 1111 33 1
4 1111 67 5
6 2222 18 4
10 2222 99 11
12 3333 333 6
15 3333 9845 1
このEntryId
列は、同じテーブルを結合するための一意の列を提供するため、これを解決しようとして追加したものです (結合されたテーブルに 15 行しかないことを確認するため)。
私はこれを試しました-取得するためだけにMIN()
:
SELECT
*
FROM
@TempPackages p1
INNER JOIN
@TempPackages p2 ON p1.EntryId = p2.EntryId
AND p1.SubProductSequence = (
SELECT
MIN(SubProductSequence)
FROM
@DeparturesToUpdate)
パッケージごとの最小シーケンス番号ではなく、最小の全体シーケンス番号を持つ行を選択するため、節INNER JOIN
が不必要であり、句が間違っているため、明らかにこれは間違っています。SELECT MIN()
これを行うための最良の方法について何か提案はありますか?