ORACLE如何串資料的問題
請問~~ORACLE如何串資料的問題
假設在A TABLE裡有NUM、GRADE這2個欄位
NUM|GRADE
1||||||||||||||||60
2||||||||||||||||70
3||||||||||||||||50
在B TABLE裡有NUM、GRADE_PERCENT這2個欄位
NUM | GRADE_PERCENT
1||||||||||||||||||||||||||||||||1.1
3||||||||||||||||||||||||||||||||1.5
請問要如何下指令,讓A TABLE 跟B TABLE的資料連結,但假如A
TABLE有資料,可是B TABLE沒有資料(就是A TABLE有2號,B
TABLE沒有2號),可是A有的資料都要顯示出來,但是A有B沒有的
要補0(或補1也可以)。如下圖, 重點在於2號那筆要拉出來,GRADE_PERCENT要
補0........請幫幫我~~~謝謝。
NUM | GRADE | GRADE_PERCENT
1||||||||||||||||||||60|||||||||||||||||||||||||||||1.1
2||||||||||||||||||||70||||||||||||||||||||||||||||||0
3||||||||||||||||||||50||||||||||||||||||||||||||||||1.5
RE:貓...
我用你的方法去RUN過了,但是還是串不出來耶....
因為B TABLE裡面沒有NUM = 2的這筆資料....
我再研究看看~~如果你有空滴話再請你幫偶想一下~~謝謝你喔~~
RE:貓...
拍謝~~我剛再去試過了,你滴方法是可以挑出乃沒錯
偶剛剛挑不出乃的原因是在於我的TABLE裡面還有其他時間型態欄位
偶再企研究一下.....
不好意思~~第一次忘了考慮時間的欄位,偶再補充一下
TABLE A
NUM|GRADE|YEAR|MONTH
1||60||20060101||20060101
1||60||20060101||20060201
(NUM 1有細分12個月)
2||70||20060101||20060101
(NUM 2有細分12個月)
3||50||20060101||20060101
(NUM 3有細分12個月)
TABLE B
NUM | GRADE_PERCENT|GRADE_TYPE|YEAR|MONTH
1||1.1||D||20050101||20050101
1||1.1||D||20050101||20050201
(2005年細分12個月)
1||1.2||D||20060101||20060101
(2006年細分12個月)
3||1.5||D||20050101||20050101
(2005年細分12個月)
3||1.4||D||20060101||20060101
(2006年細分12個月)
NUM | GRADE | GRADE_PERCENT
1||||||||||||||||||||60|||||||||||||||||||||||||||||1.1
2||||||||||||||||||||70||||||||||||||||||||||||||||||0
3||||||||||||||||||||50||||||||||||||||||||||||||||||1.5
上面的補充是要挑出 2006年1月的資料,但B TABLE裡沒有NUM 2,所以GRADE_PERCENT要為0
不好意思我寫的有點混亂~~@___@因為測的頭昏了~~
1 個解答
- 1 0 年前最佳解答
select table_A.*,nvl(table_B.grade_percent,0) grade_percent
from table_A,table_B
where table_A.num=table_B.num(+)
有問題再提出來唷
2006-07-07 13:55:14 補充:
其他時間型態欄位?如果方便的話可以把2個table的所有欄位及泥想要表示的欄位列出來醬我也可以一起幫泥想
2006-07-07 16:32:17 補充:
泥說要挑出 2006年1月的資料是table_A、table_B的year跟month都是要200601嗎如果是的話
2006-07-07 16:32:31 補充:
那最後的結是應該是NUM | GRADE | GRADE_PERCENT1||||||||||||||||||||60|||||||||||||||||||||||||||||1.2 2||||||||||||||||||||70||||||||||||||||||||||||||||||03||||||||||||||||||||50||||||||||||||||||||||||||||||1.5num 1的2006年1月的grade_percent是1.2吧?
2006-07-07 17:18:29 補充:
試試看select table_A.num,table_A.grade,NVL(table_B.grade_percent,0) grade_percentfrom (select distinct num,gradefrom testawhere substr(xmonth,1,6) = '200601' ) table_A,(select distinct num,grade_percentfrom testbwhere substr(xmonth,1,6) = '200601') table_Bwhere table_A.num=table_B.num(+)
參考資料: 自已