2016-08-01 51 views
0

我有一個Oracle SQL查詢,其中的數據透視。我遇到的問題是,pivoted數據中的某些記錄始終爲空值。我的查詢是這個樣子,在Pivot SQL中篩選出NULL值

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,我已經得到了他們的可能。我怎樣才能過濾這些類型的記錄沒有任何過濾每列或一列的總和,然後過濾器?

+0

附加表結構信息和數據,所以我們可以更好地闡明。 –

+0

add else condition to your case expressions:'then value else 0 end' – cha

+0

@Jason - 另外,請發送缺少的「group by」完整查詢 –

回答

0

你的問題是不清楚的,如果你想要刪除記錄,你有null值,然後加where value <> 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