簡體   English   中英

SQL Server 2008-數據透視表ISNULL = 0不起作用

[英]SQL Server 2008 - Pivot Table ISNULL = 0 Not working

我正在聯接兩個表,並在數據透視表中顯示結果。 這是我第一次進行數據透視,因此我對此還很陌生。

我在下面有這個查詢,它顯示的結果幾乎是我想要的,但是我無法弄清楚一件事。 如果值為isNull,則將其轉換為0。就像我通常這樣做的是isNull(value,0)。

SELECT * FROM 
( 
SELECT oa.OpptID, o.OpptName, ISNULL(Amount, 0) AS Amount, BucketNameID
FROM dbo.Opportunity o 
LEFT JOIN dbo.ProductBucketAmount oa ON oa.OpptID = o.OpptID
WHERE oa.OpptID IN (123, 456) 
) p
PIVOT
(
    Sum(p.Amount)
    FOR p.BucketNameID
    IN (
        [1], [2], [3], [4], [5]
    )   
) AS pvt

如果我喜歡PIVOT列,它可以工作,但是看起來很亂。 另外,我想每次都選擇所有列(SELECT * FROM ...)

SELECT OpptName, OpptName, ISNULL([1], 0) AS '1', ISNULL([2], 0) AS '2'  ... etc ...

請幫忙或建議

謝謝,

是的,您必須在數據透視表之外執行此操作,因此,這有點混亂。 原因是其中一些NULL數據透視表從無輸入行構造 ,因此沒有更早的階段可以將NULL轉換為0

而且,正如您還發現的那樣, PIVOT子句本身並不靈活。 它必須確切地指定一個聚合函數,而不是包含該聚合的任意表達式。

所以你有:

SELECT OpptName, OpptName, ISNULL([1], 0) AS '1', ISNULL([2], 0) AS '2'  ... etc

是關於您能做的最好的事。 (並且無法通過某種形式的SELECT * ...來執行此操作-您必須分別轉換每列)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM