我在嘗試替換null
至zero
時收到以下錯誤消息。PIVOT運算符中指定的列名「FirstName」與PIVOT參數中的現有列名衝突
在PIVOT運算符中指定的列名稱「jan」與在PIVOT參數中的現有列名稱與 衝突。下面
查詢:
select * from(select isnull(jan,0),isnull(feb,0),sum(data) as amount)as p
pivot(
sum(amount) for month in(jan,feb)) as piv
我在嘗試替換null
至zero
時收到以下錯誤消息。PIVOT運算符中指定的列名「FirstName」與PIVOT參數中的現有列名衝突
在PIVOT運算符中指定的列名稱「jan」與在PIVOT參數中的現有列名稱與 衝突。下面
查詢:
select * from(select isnull(jan,0),isnull(feb,0),sum(data) as amount)as p
pivot(
sum(amount) for month in(jan,feb)) as piv
你可以使用CTE
來定義空值,然後轉動數據是這樣的:
;WITH t
AS (
SELECT isnull(jan, 0) AS jan
,isnull(feb, 0) AS feb
,sum(data) AS amount
FROM your_table --change this to match your table name
GROUP BY jan,feb
)
SELECT *
FROM (
SELECT t.jan
,t.feb
,t.amount
FROM t
)
pivot(sum(amount) FOR [month] IN (
jan
,feb
)) AS piv
Thanku尼泊爾語,爲什麼使用 –
'WITH'子句可以幫助您構建查詢並執行所有的空邏輯(就您的情況而言),然後可以在查詢的第二部分中使用,而無需做任何類型的數據操作。如果你有興趣,這裏有更多關於在sql server中使用'CTE'的信息。 https://www.simple-talk.com/sql/t-sql-programming/sql-server-cte-basics/ – FutbolFan
這就像錯誤說你的列名是錯誤的,因爲它們會被解讀爲未命名。給他們適當的名稱:
select isnull(Jan,0), isnull(feb,0) from(select sum(data) as amount, [month]
from yourtable group by [month])as p
pivot(
sum(amount) for [month] in(jan,feb)) as piv
我已經給出了適當的名稱,同樣的錯誤來了 –
我認爲使用「月」導致混亂,因爲這是一個保留字。它是你桌子上的一個專欄嗎? –
現在我改變了我的列名,出現了相同的錯誤 –
你可以把樣本數據+預期的結果? –
@ManoJohnbritto - 請* *您的問題添加樣本數據和預期結果 –