我有臨時表(@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分別在輸出中。 –