我有临时表(@TempPackages
),它看起来是这样的:如何查找包含SQL Server中特定列的MIN/MAX值的所有(基于组)的行?
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
值的行,每一个独特的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()
条款是错误的,因为它选择具有最小整体序列号的行,而不是每个包的最小序列号。
任何有关最佳方式的建议吗?
@MitchWheat - 我看不到任何不一致。你能详细说明吗? – LeopardSkinPillBoxHat
我的错误:min和max分别在输出中。 –