查找符合特定条件的记录组

Ses*_*ame 1 sql t-sql sql-server sql-server-2008

我有以下数据:

ID --- ParentID --- DataValue  
1  ---    1     ---    A  
2  ---    1     ---    B  
3  ---    1     ---    C  
4  ---    4     ---    B  
5  ---    4     ---    C  
6  ---    6     ---    A  
7  ---    6     ---    B  
8  ---    6     ---    C  
9  ---    6     ---    D
Run Code Online (Sandbox Code Playgroud)

对于每组记录(按ParentID分组),我想找到所有没有包含"A"的记录作为DataValue的组

由于组1和组6至少包含一个"A"作为DataValue的记录,我不希望看到它们.我只想看到记录4和5(这是第4组的一部分),因为该组中没有记录具有"A".

任何帮助是极大的赞赏!

Tom*_*lak 5

SELECT
  ID,
  ParentID,
  DataValue
FROM
  MyTable
WHERE
  NOT EXISTS (
    SELECT 1 
      FROM MyTable i
     WHERE i.ParentId = MyTable.ParentId AND i.DataValue = 'A'
  )
Run Code Online (Sandbox Code Playgroud)

(ParentId, DataValue)如果表很大,则建议使用索引.