Oracle SQL查询需求:仅返回至少含一个NULL值的行
解决Oracle PIVOT后筛选含NULL值行的问题
首先修正你的PIVOT查询并添加正确的筛选条件,核心问题是数字列名需要用双引号引用,否则Oracle会将WHERE子句中的0/1/2识别为数字常量而非列名,导致筛选条件失效。
修正后的完整查询
SELECT * FROM ( SELECT AD.DE, AD.AT, AD.LO FROM M.AD AD ) SourceTable PIVOT ( MAX(DE) FOR (LO) IN ( 0 AS "0", 1 AS "1", 2 AS "2" ) ) PivotTable WHERE "0" IS NULL OR "1" IS NULL OR "2" IS NULL;
关键说明
- 列名引用:Oracle中如果使用纯数字作为列名,必须用双引号包裹,否则数据库会将其解析为数值,而非你PIVOT生成的列。这是你之前添加WHERE子句无结果的核心原因。
- 筛选逻辑:
WHERE "0" IS NULL OR "1" IS NULL OR "2" IS NULL直接判断三个PIVOT生成的列中至少有一个为NULL,符合你“仅保留含至少一个NULL值列的行”的需求。
内容的提问来源于stack exchange,提问作者Nexx
相关产品推荐
相关产品推荐

