试试这个
SELECT A.*, B,JAN_11, B.FEB_11 FROM (
Select name,
SUM(DECODE(TO_CHAR(Datee,'MM'),'01',PRICE)) JAN_12,
SUM(DECODE(TO_CHAR(Datee,'MM'),'02',PRICE)) FEB_12
from price_list_LastYear
Group By Name) A
LEFT OUTER JOIN (
Select name,
SUM(DECODE(TO_CHAR(Datee,'MM'),'01',PRICE)) JAN_11,
SUM(DECODE(TO_CHAR(Datee,'MM'),'02',PRICE)) FEB_11
from price_list_TwoLastYear
Group By Name) B ON A.name = B.Name
或者
Select name,
SUM(CASE WHEN Yr = '11' THEN DECODE(Mnth,'01',PRICE) ELSE NULL END) JAN_11,
SUM(CASE WHEN Yr = '12' THEN DECODE(Mnth,'01',PRICE) ELSE NULL END) JAN_12,
SUM(CASE WHEN Yr = '11' THEN DECODE(Mnth,'02',PRICE) ELSE NULL END) FEB_11,
SUM(CASE WHEN Yr = '12' THEN DECODE(Mnth,'02',PRICE) ELSE NULL END) FEB_12
from
(
SELECT '12' As yr, name, TO_CHAR(Datee,'MM') Mnth, Price
FROM price_list_LastYear
UNION ALL
SELECT '11' As yr, name, TO_CHAR(Datee,'MM') Mnth, Price
FROM price_list_TwoLastYear
)
GROUP BY Name