2016-09-23 77 views
1

我想提出一個條件,如果[2015][2016]爲NULL,然後隱藏行, ,但我不能把它關閉。數據透視表如何不允許多列中的空值

我對billname沒有興趣,如果它沒有數據。

SELECT 
    IssuedByUserGroup, 
    BILLNAME, 
    SUM([2016]) AS [2016], 
    SUM([2015])AS [2015] 
FROM Sum_Orders 
PIVOT 
(
    SUM(Sum_SellPrice) 
     FOR OrderperiodYear IN ([2016],[2015]) 
) AS pvt 
WHERE ((MONTH(OrderDate) = MONTH(GETDATE()) 
    AND day(OrderDate) <= DAY(GETDATE())) OR MONTH(OrderDate) < MONTH(GETDATE())) 
--This part above is just for getting the data since january 1 to sep 23(to the date) 
    AND OrderStatus in ('Complete','invoiced') 
    AND OrderPrefix IN ('LAX6') 
GROUP BY BILLNAME,IssuedByUserGroup 
ORDER BY IssuedByUserGroup desc 

這是返回預期如下:

enter image description here

謝謝!

回答

2

添加COALESCEGROUP BY部分:

HAVING COALESCE(SUM([2016]), SUM([2015])) IS NOT NULL 
+0

由於它沒有工作,我將不勝感激,如果你可以解釋它爲什麼起作用? –

+0

COALESCE取第一個值,檢查它是否爲NULL,如果不是NULL - 返回此值。如果傳遞的第一個值爲NULL - 則轉到下一個值並執行相同的檢查。如果所有傳遞的值都是NULL,它將返回NULL。你不能在WHERE部分使用SUM(集合函數),這就是爲什麼你需要使用HAVING。 – gofr1

0

您應該能夠使用WHERE子句的樞軸之下,這樣的事情:

WHERE [2015] IS NOT NULL