我有一个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声明吗?
答案 0 :(得分: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 :(得分: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