2011-08-03 165 views
0

我有一個T-SQL報告導致下面的輸出:T-SQL選擇數據,如果null和數據返回,否則返回null

 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

也許如果你沒有其中A和B是相同的記錄,合計,但C有不同的非NULL值

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
SELECT ... 
FROM table_1 a WHERE a.C is NOT NULL OR 
(SELECT COUNT(*) FROM table_1 a1 WHERE a1.B = a.B)=1