1

[COL1] からすべてを見つけることSELECT DISTINCT [COL1] from {TABLE}ができます。[COL2] には「A」がありますが、[COL2] には「B」はありません。この場合、「3」と「4」が結果になるはずです。

テーブル

   [COL1]      [COL2]
   ----        ----
   '1'          'A'
   '1'          'B'
   '1'          'C'
   '2'          'B'
   '2'          'C'
   '3'          'A'
   '3'          'C'
   '4'          'A'
   '4'          'D'
4

3 に答える 3

4
SELECT [COL1] from {TABLE} WHERE [COL2] = 'A' 
EXCEPT
SELECT [COL1] from {TABLE} WHERE [COL2] = 'B'

または

SELECT [COL1]
FROM   {TABLE}
GROUP  BY [COL1]
HAVING MAX(CASE
             WHEN [COL2] = 'A' THEN 1
             ELSE 0
           END) = 1
       AND MAX(CASE
                 WHEN [COL2] = 'B' THEN 1
                 ELSE 0
               END) = 0 
于 2013-09-13T07:11:40.713 に答える
2
SELECT DISTINCT [COL1]
FROM {TABLE} t1
WHERE t2.[COL2] = 'A'
AND NOT EXISTS
(
    SELECT 1
    FROM {TABLE} t2
    WHERE t2.[COL1] = t1.[COL1]
    AND t2.[COL2] = 'B'
)
于 2013-09-13T07:11:54.453 に答える
1
;WITH MyCTE AS
(
    SELECT DISTINCT [COL1]
    FROM   [TABLE]
    WHERE  [COL2] = 'B'
)
SELECT DISTINCT [COL1]
FROM   [TABLE]
WHERE  [COL2] = 'A'
AND    [COL1] NOT IN (SELECT [COL1] FROM MyCTE )
于 2013-09-13T07:12:14.357 に答える