T-SQL Выберите Данные, если возвращены как ноль, так и данные, иначе ноль - PullRequest
0 голосов
/ 03 августа 2011

У меня есть отчет t-sql, который приводит к следующему выводу:

     A       B             C
Bridgevine  6093690444  3917018
Bridgevine  972         3929277
Bridgevine  974 
Bridgevine  974         3918929
CSPP Test   72720110438 
CSPP Test   1234    
CSPP Test   CCDSTSTNW   
Intelisys   12114 - DD  
Intelisys   12114 - DD  3844758
Intelisys   12553 - TL  3881365

Проблема состоит в том (в качестве примера) две записи, показывающие, где B = 974. Я хотел бы только чтобыпокажите, где C имеет значение.Если запись не имеет значения для C, я бы хотел, чтобы она все еще показывала эту запись.Итак, вот желаемый результат:

     A       B             C
Bridgevine  6093690444  3917018
Bridgevine  972         3929277
Bridgevine  974         3918929
CSPP Test   72720110438 
CSPP Test   1234    
CSPP Test   CCDSTSTNW       
Intelisys   12114 - DD  3844758
Intelisys   12553 - TL  3881365

Я знаю, что это не должно быть сложно, но я не могу понять это.Вы бы использовали оператор COALESCE или CASE или что-то еще?

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Вероятно, совокупный , если у вас нет записей, где A и B одинаковы, но C имеет разные ненулевые значения

SELECT
  A, B, MAX(C)
FROM
 whatever
GROUP BY
  A, B
ORDER BY
 whatever

Так что это не работает для

CSPP Test   SomeB    null
CSPP Test   SomeB    FirstC
CSPP Test   SomeB    SecondC    --only get this row

или

Intelisys   AnotherB    ValidC1
Intelisys   AnotherB    ValidC2    --only get this row
1 голос
/ 03 августа 2011
SELECT ...
FROM table_1 a WHERE a.C is NOT NULL OR 
(SELECT COUNT(*) FROM table_1 a1 WHERE a1.B = a.B)=1
...