瀏覽單個文章
aln761
Basic Member
 

加入日期: Apr 2005
文章: 17
請教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修改成'戊'
雖然可以挑出資料,但它會將甲、乙的加在一起,也把丙、丁的加在一起了
就不是我想要的資料,我並不想將丙、丁加起來
試問...有辦法能成功挑出來嗎....
     
      
舊 2006-02-10, 10:18 AM #1
回應時引用此文章
aln761離線中