我有一個資料透視表輸出,現在我想檢查資料透視列中的值,并在另一個表的另一列中替換為空的值。
| 發票號碼 | 柱子 | 價值 |
|---|---|---|
| 111 | 一種 | 一 |
| 111 | 乙 | 二 |
| 111 | C | 三 |
| 111 | 乙 | 五 |
(SELECT Invoice_No, new_value, Column_Name FROM table_name)
PIVOT(max(new_value)
FOR Column_Name IN ('A','B','C','D','E'))
這回傳了下表
| 發票號碼 | '一種' | '乙' | 'C' | 'D' | 'E' |
|---|---|---|---|---|---|
| 111 | 一 | 二 | 三 | 空值 | 五 |
現在,我想用另一個表中與 Invoice_no 匹配的值替換 D 列中的空值。
with temp as
(SELECT Invoice_No, new_value, Column_Name FROM table_name)
PIVOT(max(new_value)
FOR Column_Name IN ('A','B','C','D','E'))
select nvl(temp.D,bckup.D)
from
(select A,B,C,D,E from Backup_table) bckup
join
temp
on
temp.Invoice_No = bckup = Invoice_No
現在,我收到錯誤訊息,說 D 列不存在。
uj5u.com熱心網友回復:
Pivot 會將您的列重命名為“D”,而不僅僅是 D。因此,您需要在查詢中進行簡單的更新 -
WITH temp AS(SELECT *
FROM(SELECT Invoice_No, new_value, Column_Name
FROM table_name)
PIVOT(max(new_value) FOR Column_Name IN ('A' AS A,'B' AS B,'C' AS C,'D' AS D,'E' AS E)
)
SELECT NVL(temp.D,bckup.D)
FROM(SELECT A,B,C,D,E
FROM Backup_table) bckup
JOIN temp ON temp.Invoice_No = bckup.Invoice_No
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/365531.html
