Oracle pivot函数处理空值的方法

avatar
作者
筋斗云
阅读量:0

在Oracle中,PIVOT函数用于将行数据转换为列数据

以下是一个使用PIVOT函数处理空值的示例:

假设我们有一个名为SALES_DATA的表,其中包含以下数据:

PRODUCT | MONTH | SALES --------|-------|------- A       | 1     | 100 A       | 2     | 200 B       | 1     | 150 B       | 3     | 300 

我们想要将这些数据转换为以下格式:

PRODUCT | MONTH_1 | MONTH_2 | MONTH_3 --------|---------|---------|--------- A       | 100     | 200     | NULL B       | 150     | NULL    | 300 

为了实现这个目标,我们可以使用PIVOT函数,并使用NVL函数处理空值。以下是SQL查询:

SELECT * FROM (     SELECT PRODUCT, MONTH, SALES     FROM SALES_DATA ) PIVOT (     SUM(SALES)     FOR MONTH IN (1 AS MONTH_1, 2 AS MONTH_2, 3 AS MONTH_3) ) ORDER BY PRODUCT; 

这将返回预期的结果。如果您希望将空值替换为特定值(例如0),可以使用NVL函数。以下是修改后的查询:

SELECT PRODUCT,        NVL(MONTH_1, 0) AS MONTH_1,        NVL(MONTH_2, 0) AS MONTH_2,        NVL(MONTH_3, 0) AS MONTH_3 FROM (     SELECT PRODUCT, MONTH, SALES     FROM SALES_DATA ) PIVOT (     SUM(SALES)     FOR MONTH IN (1 AS MONTH_1, 2 AS MONTH_2, 3 AS MONTH_3) ) ORDER BY PRODUCT; 

这将返回以下结果:

PRODUCT | MONTH_1 | MONTH_2 | MONTH_3 --------|---------|---------|--------- A       | 100     | 200     | 0 B       | 150     | 0       | 300 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!