在数据透视表SQL中筛选出NULL值

时间:2016-08-01 06:15:24

标签: sql oracle

我有一个Oracle SQL查询,我在其中透视数据。我遇到的问题是,数据透视数据中的某些记录始终具有空值。我的查询看起来像这样,

    select product, type, month, sum(case when variable = 'LY' then value end) as "LY",
    sum(case when variable = 'TY' then value end) as "TY",
    sum(case when variable = 'NY' then value end) as "NY"
    from tbl_sales
group by
product, type, month

我的记录集如下所示,

Product  type  month  LY     TY    NY
AA1       2     1     20     30    40
AA2       4     1     30     50    60
AA3       4     1     NULL   NULL  NULL
AA4       3     1     NULL   NULL  NULL

此结果只是数据的一小部分,总共有大约15个旋转列。我遇到的问题是最后两个记录(产品AA3和AA4,我可能有他们。如何过滤这些类型的记录,而不对每列或一列的过滤,然后过滤?< / p>

1 个答案:

答案 0 :(得分:0)

你的问题不清楚。如果您想删除具有null值的记录,请添加where value <> null。 (但是这仍会导致某些列中包含null的记录 - 如果该列没有值..)

如果您希望使用不为null的其他默认值,而不是在每个列case when中指定它,那么您可以:

select product, type, month, sum(case when variable = 'LY' then value end) as "LY",
    sum(case when variable = 'TY' then value end) as "TY",
    sum(case when variable = 'NY' then value end) as "NY"
from (select product, type, month, variable, case when value is null then 0 else value end value from tbl_sales)

(但将其设为0与将其作为null

相同