我有一个临时表(@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()
子句是错误的,因为它选择具有最小总序列号的行,而不是每个包的最小序列号。
关于最好的方法有什么建议吗?