[英]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.