Sql-Server-2008-R2

當並非所有值都不同時顯示唯一列

  • April 17, 2018
Name Status Contact EpisodeNumber
AA   C      E       1
AA   C      F       1
AA   C      G       1
AA   D      H       1
BB   D      I       2
CC   C      J       3
DD   C      K       4

如果 D 出現在給定名稱的任何“狀態”列中,我不想看到它們。每個“聯繫人”都不同,這很好,我需要確保 EpisodeNumber 相同。發生的情況是每次“狀態”更改時,它都會為該名稱創建一個新行,其中包含更改它的聯繫人,所以我不能做一個簡單的選擇 * where status != ‘D’ 因為它會向我顯示其他狀態給定劇集編號。我們正在執行帶有 sql management studio 版本 10.50.6560.0 和報告生成器 3.0 的 SQL Server 2008 R2

Name Status Contact EpisodeNumber
CC   C      J       3
DD   C      K       4

如果我正確理解您的問題,我認為NOT EXISTS應該可以。

DECLARE @T TABLE (
   NAME VARCHAR(30)
   ,STATUS VARCHAR(5)
   ,Contact VARCHAR(5)
   ,EpisodeNumber INT
   );
INSERT INTO @T
VALUES
   ('AA', 'C', 'E', 1),
   ('AA', 'C', 'F', 1),
   ('AA', 'C', 'G', 1),
   ('AA', 'D', 'H', 1),
   ('BB', 'D', 'I', 2),
   ('CC', 'C', 'J', 3),
   ('DD', 'C', 'K', 4)
;
SELECT *
FROM @T t
WHERE NOT EXISTS (
       SELECT *
       FROM @T
       WHERE NAME = t.NAME
           AND EpisodeNumber = t.EpisodeNumber
           AND STATUS = 'D'
       );

| NAME | STATUS | Contact | EpisodeNumber |
|------|--------|---------|---------------|
| CC   | C      | J       | 3             |
| DD   | C      | K       | 4             |

引用自:https://dba.stackexchange.com/questions/204246