SQL:返回条件为true的行组

biv*_*viz 1 sql t-sql sql-server

我的数据集如下所示:

PNR    Action Code
-----+-------------
1    |  Book
1    |  Exchange
1    |  Cancel
2    |  Book
2    |  Exchange
3    |  Book
4    |  Book
4    |  Cancel
Run Code Online (Sandbox Code Playgroud)

我试图返回PNR的所有行,其中Action代码为"取消".所以在这种情况下,PNR 1和4的所有行.

我试图使用Where子句,但这不正确,因为它只返回WHERE行动代码为"取消"的行.我的结果应该是这样的:

PNR    Action Code
-----+-------------
1    |  Book
1    |  Exchange
1    |  Cancel
4    |  Book
4    |  Cancel
Run Code Online (Sandbox Code Playgroud)

Deg*_*gan 7

也许从Where子句中的select语句中获取所需的PNR?

Select T1.PNR
      ,T1.[Action Code]
From myTable T1
Where T1.PNR in (
       Select PNR
       from myTable
       where [Action Code] = 'Cancel'
       )
Run Code Online (Sandbox Code Playgroud)