0
我有以下2次的記錄:合併兩個記錄在Oracle
記錄1:
Id isVal isVal1
1 Y N
2 Y N
記錄2:
Id isVal isVal1
2 N Y
3 N Y
需要實際記錄是:
Id isVal isVal1
1 Y N
2 Y Y
3 N Y
我應該使用連接嗎?你可以請教我怎麼解決這個問題?
我有以下2次的記錄:合併兩個記錄在Oracle
記錄1:
Id isVal isVal1
1 Y N
2 Y N
記錄2:
Id isVal isVal1
2 N Y
3 N Y
需要實際記錄是:
Id isVal isVal1
1 Y N
2 Y Y
3 N Y
我應該使用連接嗎?你可以請教我怎麼解決這個問題?
不,您希望將記錄放在彼此之上,因此您需要使用union
。
select id, max(isval) as isval, max(isval1) as isval1
from (select id, isval, isval1
from recordset1
union all
select id, isval, isval1
from recordset1
)
group by id
我用union all
因爲你並不需要刪除重複,爲此你會刪除all
。
max
的工作原理是因爲'Y'
比'N'
「大」。
我假設'Y'
優先於'N'
,而不是來自第一個記錄集的值不如第二個記錄集的值重要。
在看'Id = 2'時,你想要'isVal'的值?在記錄集1中指定的'Y',或者在記錄集2中的'N'?記錄集1的值始終優先於記錄集2的值嗎?如果'Id'存在於兩個表中,或者'Y'總是優先於'N'? – Glenn