如何在SQL Developer中实现行转列?优化数据展示遇问题求助
问题说明
初始数据表包含CASE_NUMBER、ASSIGNMENT_ROLE、cnt三个字段,每条记录对应某个案件编号下特定角色的计数。执行PIVOT查询后,部分列出现空值,不符合预期的全非空展示需求。
解决方案
在PIVOT查询的外层,使用空值替换函数(如Oracle的NVL、SQL Server的ISNULL、MySQL的IFNULL)将空值转为0,同时明确列名别名以匹配预期格式:
SELECT CASE_NUMBER, NVL("'2nd case'", 0) AS "2nd case", NVL("'1st case'", 0) AS "1st case", NVL("'3rd case'", 0) AS "3rd case" FROM T_TEST PIVOT ( MAX(cnt) FOR ASSIGNMENT_ROLE IN ('2nd case', '1st case', '3rd case') );
说明
- 原查询中,当某个
CASE_NUMBER对应的ASSIGNMENT_ROLE无数据时,MAX(cnt)会返回空值。通过NVL这类函数可将空值替换为0,实现预期的非空展示。 - 注意列名的引号规则:PIVOT生成的列名会保留
IN子句中字符串的引号格式,引用时需用双引号包裹(不同数据库的标识符规则略有差异,需根据实际使用的数据库调整)。
内容的提问来源于stack exchange,提问作者Ina
相关产品推荐
相关产品推荐

