2016-09-23 33 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 
相关问题