|
Basic Member
|
請教SQL達人......一個有關 UNION 的語法問題
不好意思在PCDVD找不到有關程式語言的地方PO,只好在這裡問看看^__^
有個ORACLE SQL語法小弟試了狠久,都無法成功>__<
想請教一下站上的SQL高手,煩請賜教,謝謝。
假設在 A 的TABLE裡
有
名稱 數量 總金額 日期 四個欄位
甲 1 10 20060210
乙 2 40 20060210
丙 3 60 20060210
丁 4 160 20060210
(實際上依日期不同會不只四筆資料,目前假設只有四筆
)
如果我要下 SQL 語法挑出資料(不更新、修改原先的資料)
要將甲、乙加在一起,叫做戊,像這樣
名稱 數量 總金額 日期 四個欄位
戊 3 50 20060210
丙 3 60 20060210
丁 4 160 20060210
我現在下的是先挑出甲加乙,將名稱命名為戊的
SELECT '戊' 名稱,SUM(數量) 數量,SUM(總金額) 總金額
FROM A
WHERE 日期 = TO_DATE(20060210,'YYYYMMDD')
AND (名稱='甲' OR 名稱='乙')
GROUP BY '戊'
另外挑出不含甲、乙的
SELECT 名稱,SUM(數量) 數量,SUM(總金額) 總金額
FROM A
WHERE 日期 = TO_DATE(20060210,'YYYYMMDD')
AND 名稱<>'甲'
AND 名稱<>'乙'
GROUP BY 名稱
以上兩個語法我分別試過,都可以成功挑出資料
但我在做兩個表單UNION的時候就不行
我是這樣下的
SELECT '戊' 名稱,SUM(數量) 數量,SUM(總金額) 總金額
FROM A
WHERE 日期 = TO_DATE(20060210,'YYYYMMDD')
AND (名稱='甲' OR 名稱='乙')
GROUP BY '戊'
UNION
SELECT 名稱,SUM(數量) 數量,SUM(總金額) 總金額
FROM A
WHERE 日期 = TO_DATE(20060210,'YYYYMMDD')
AND 名稱<>'甲'
AND 名稱<>'乙'
GROUP BY '名稱'
但是在執行的時候就會有錯@@
會出現 expression must have same datatype as corresponding expression
我有嘗試將下面的語法中的 名稱 及group by修改成'戊'
雖然可以挑出資料,但它會將甲、乙的加在一起,也把丙、丁的加在一起了
就不是我想要的資料,我並不想將丙、丁加起來
試問...有辦法能成功挑出來嗎....
|