我無法避免兩個表之間的連接結果。這兩個表的定義是:sql - 在兩個具有相同列名的表之間無法轉接連接
create table scores_jan (
id number
, test_1 number
, test_2 number
, test_3 number
);
create table scores_feb (
id number
, test_1 number
, test_2 number
, test_3 number
);
insert into scores_jan values (1, 50, 60, 70);
insert into scores_feb values (1, 55, 65, 75);
commit;
我想UNPIVOT這讓一排每個ID /測試組合,達到的效果:
ID TEST_NUMBER JAN_SCORE FEB_SCORE
1 test_1 50 55
1 test_2 60 65
1 test_3 70 75
如果我寫的逆轉置不指定我感興趣的欄目,它看起來像這樣:
select *
from scores_jan j
join scores_feb f
on j.id = f.id
unpivot ((jan_score, feb_score) for test_name in ((test_1, test_1) as 'test_1'
, (test_2, test_2) as 'test_2'
, (test_3, test_3) as 'test_3'
)
)
這會產生錯誤ORA-00918:列定義的含糊
如果我嘗試將其與指定的列使用寫,它看起來像這樣:
select *
from scores_jan j
join scores_feb f
on j.id = f.id
unpivot ((jan_score, feb_score) for test_name in ((j.test_1, f.test_1) as 'test_1'
, (j.test_2, f.test_2) as 'test_2'
, (j.test_3, f.test_3) as 'test_3'
)
)
這會產生錯誤ORA-01748:這裏只允許簡單的列名
有沒有一種辦法讓這個unpivot工作?我可以將其中一個表放入子查詢中,但使用子查詢僅用於更改列的別名似乎並不理想。
編輯你的問題,表明你想要達到的效果。 –
@GordonLinoff預期結果已添加。 – spielchecker
@spielchecker - 您正在使用哪個版本的Oracle? – GurV