我有一个包含列的表,其中可以包含空值。 我需要编写一个查询,如果列中有多个空值,则返回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
作为计数。
答案 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