SQL Select 有两个项目的不同组

SQL Select Distinct Group By Having Two Items

我目前有一个 table 数据如下。

我将如何按 HeaderId 分组并获得包含多个指定项目的不同 HeaderId?

一个例子是 return HeaderId 包含 NTNB 和 NMPTN 位置。我使用下面的 SQL 然后使用 C# 手动检查它们是否相同 HeaderId .

SELECT DISTINCT([HeaderId]) FROM [dbo].[timings] WHERE Location = 'NTNB'
SELECT DISTINCT([HeaderId]) FROM [dbo].[timings] WHERE Location = 'NMPTN'

为以下数据寻找包含 NTNB 和 NMPTN 的不同 HeaderId 的预期结果为 4。

HeaderId    Ordinal Location
3   0   KRKYLEJ
3   1   IRNVLJN
3   2   LGML
3   3   TRWLJN
3   4   STAPLFD
3   5   TOTODSL
4   0   CREWBHM
4   1   CREWBHJ
4   2   MADELEY
4   3   NTNB
4   4   STAFFRD
4   5   STAFTVJ
4   6   WHHSJN
4   7   COLWICH
4   8   RUGLYNJ
4   9   RUGL
4   10  LCHTNJ
4   11  AMNGTNJ
4   12  NNTN
4   13  RUGBTVJ
4   14  RUGBY
4   15  HMTNJ
4   16  LNGBKBY
4   17  NMPTN
4   18  HANSLPJ
4   19  MKNSCEN
4   20  DNBGHSJ
4   21  BLTCHLY
4   22  LEDBRNJ
4   23  TRING
4   24  BONENDJ
4   25  WATFDJ
4   26  HROW
4   27  WMBY
4   28  WLSDNBJ
4   29  HARLSJN
4   30  WLSDWLJ
4   31  CMDNJN
4   32  CMDNSTH
4   33  EUSTON
4   34  CMDNSTH
4   35  CMDNJN
4   36  QPRKAC

HeaderId 聚合,然后断言两个位置都存在:

SELECT HeaderId
FROM timings
WHERE Location IN ('NTNB', 'NMPTN')
GROUP BY HeaderId
HAVING MIN(Location) <> MAX(Location)