I've a pivot table output and now I want to check for the values from the pivot columns and replace the values if null from another column from another table.
| Invoice_No | Column | value |
|---|---|---|
| 111 | A | One |
| 111 | B | Two |
| 111 | C | Three |
| 111 | E | Five |
(SELECT Invoice_No, new_value, Column_Name FROM table_name)
PIVOT(max(new_value)
FOR Column_Name IN ('A','B','C','D','E'))
This returned the following table
| Invoice_No | 'A' | 'B' | 'C' | 'D' | 'E' |
|---|---|---|---|---|---|
| 111 | One | Two | Three | null | Five |
Now, I want to replace the null value from column D with a value from another table that matches the Invoice_no.
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
Now, I'm getting the error saying D Column does not exist.
Pivot will rename your column as 'D' not D only. So, You need a simple update in your query as -