求oracle sql 语句
需求
M79B table
M79BLBLCOD M79BYR M79BPOSSNCOD M79BLINNUM M79BDISRTE M79BCMSRTE
XGS2013SS123
XGS2013SS245
AFA2012SS100.65
AFA2012SS20.20.6
AFA2012SS30.30.55
AFA2012SS40.50.5
AFA2011SS40.50.4
AFA2011SS10.10.45
AFA2011SS20.20.4
AFA2011SS30.30.45
根據用戶選擇的 Year 年份、Season 季度、Supplier 供應商,擷取ZTM79, ZTM79A, ZTM79B
首欄的內容為M79BDISRTE(以此欄排序)
之後的欄位按Year 年份、Season 季度而定,內容為M79BCMSRTE,
1.基本上一開始要找到所有需要的季度的discount rate,以discount rate排序在最左欄顯示
2.然後在右邊的欄位把所有需要的季度填上M79BCMSRTE
3. 如果個別季度沒有某個discount rate,該格為空白
想要得要下面效果
2011& 2012 M79BDISRTE2011 SS M79BCMSRTE2012 SS M79BCMSRTE
00.65
0.10.45
0.20.40.6
0.30.450.55
0.50.40.5
比如SELECT M79BLBLCOD,M79BYR,M79BPOSSNCOD,M79BDISRTE,M79BCMSRTE
FROM ZTM79B
WHERE M79BLBLCOD='AFA'
AND M79BYR IN ('2011', '2012')
AND M79BPOSSNCOD IN ('SS')
[解决办法]
select NVL(T1.M79BDISRTE, T2.M79BDISRTE) AS M79BDISRTE,
T1.M79BCMSRTE,
T2.M79BCMSRTE
from (select M79BDISRTE, M79BCMSRTE
from test
where M79BYR = '2011'
AND M79BLBLCOD = 'AFA'
and M79BPOSSNCOD = 'SS') t1
full join (select M79BDISRTE, M79BCMSRTE
from test
where M79BYR = '2012'
AND M79BLBLCOD = 'AFA'
and M79BPOSSNCOD = 'SS') t2 on t1.M79BDISRTE =
t2.M79BDISRTE
ORDER BY NVL(T1.M79BDISRTE, T2.M79BDISRTE)
=======================================================
100.65
20.10.45
30.20.40.6
40.30.450.55
50.50.40.5