如果列中有多个null,则Count应为零

时间:2015-06-06 11:15:21

标签: sql sql-server sql-server-2008

我有一个包含列的表,其中可以包含空值。 我需要编写一个查询,如果列中有多个空值,则返回0。

下面是表格结构:

ID | FNAME     | LNAME    | Country | ReportTo 
---+-----------+----------+---------+----------
1  | Davolio   | Nancy    | USA     | null 
2  | Fuller    | Andrew   | USA     | null 
3  | Leverling | Janet    | USA     | 1
4  | Peacock   | Margaret | USA     | 2 
5  | Callahan  | Laura    | USA     | 2 

如果0列中包含空值,我需要Reportsto作为计数。

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT 
    ID, FNAME, LNAME, Country,
    CASE WHEN COUNT(CASE WHEN column1 IS NULL THEN 1 END) OVER (PARTITION BY column1) > 1 THEN 0 ELSE Reportsto END AS Reportsto
FROM
    t

或(您可以使用下面的语句,如WHERE 0 = (SELECT ...)

SELECT 
    CASE WHEN COUNT(CASE WHEN column1 IS NULL THEN 1 END) > 1 THEN 0 ELSE 1 END 
FROM
    t