PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 疑難雜症區
帳戶
密碼
 

  回應
 
主題工具
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:23 AM 被 aln761 編輯.
舊 2006-02-10, 10:18 AM #1
回應時引用此文章
aln761離線中  
瘋狂火星人
Elite Member
 
瘋狂火星人的大頭照
 

加入日期: Jul 2004
您的住址: 無止盡的文件地獄~~
文章: 4,714
兩個表單的話,有試過改用join的方式嗎???
 
__________________

歡迎光臨瘋狂火星基地~~
自然進氣可變汽門單缸雙活塞人肉避震
舊 2006-02-10, 10:47 AM #2
回應時引用此文章
瘋狂火星人離線中  
aln761
Basic Member
 

加入日期: Apr 2005
文章: 17
引用:
作者瘋狂火星人
兩個表單的話,有試過改用join的方式嗎???


啊@@
拍謝,偶有點講錯
TABLE只有一個
偶剛說滴兩個表單是指分別下語法篩選後,甲+乙還有除了甲、乙的資料
舊 2006-02-10, 11:12 AM #3
回應時引用此文章
aln761離線中  
cxh
Major Member
 
cxh的大頭照
 

加入日期: Sep 2001
您的住址: 工廠苦命人
文章: 230
引用:
作者aln761
不好意思在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


我現在下的是先挑出甲加乙,將名稱命名為...



把Group by 砍掉一個吧..

ex

(select field-x From Table a
union
select field-x From Table a )
Group BY field-x


你原句二個Group By 會造成無法依據..TRY
舊 2006-02-10, 11:21 AM #4
回應時引用此文章
cxh離線中  
aln761
Basic Member
 

加入日期: Apr 2005
文章: 17
引用:
作者cxh
把Group by 砍掉一個吧..

ex

(select field-x From Table a
union
select field-x From Table a )
Group BY field-x


你原句二個Group By 會造成無法依據..TRY


試過把上面或下面的GROUP BY了,仍然不行,錯誤訊息也是一樣
繼續嘗試ING...
舊 2006-02-10, 11:29 AM #5
回應時引用此文章
aln761離線中  
瘋狂火星人
Elite Member
 
瘋狂火星人的大頭照
 

加入日期: Jul 2004
您的住址: 無止盡的文件地獄~~
文章: 4,714
引用:
作者aln761
啊@@
拍謝,偶有點講錯
TABLE只有一個
偶剛說滴兩個表單是指分別下語法篩選後,甲+乙還有除了甲、乙的資料


話說~~~
還是不太了解您的意思.....
您要的查詢結果是除了顯示甲+乙的戊之外,連帶把原本的甲、乙也顯示出來嗎???
__________________

歡迎光臨瘋狂火星基地~~
自然進氣可變汽門單缸雙活塞人肉避震
舊 2006-02-10, 11:46 AM #6
回應時引用此文章
瘋狂火星人離線中  
aln761
Basic Member
 

加入日期: Apr 2005
文章: 17
Smile

引用:
作者瘋狂火星人
話說~~~
還是不太了解您的意思.....
您要的查詢結果是除了顯示甲+乙的戊之外,連帶把原本的甲、乙也顯示出來嗎???


我要查詢的結果是只顯示甲+乙的戊,還有本來的丙、丁,共三筆資料。
原本的甲、乙就不顯示出來了。
舊 2006-02-10, 11:56 AM #7
回應時引用此文章
aln761離線中  
瘋狂火星人
Elite Member
 
瘋狂火星人的大頭照
 

加入日期: Jul 2004
您的住址: 無止盡的文件地獄~~
文章: 4,714
引用:
作者aln761
我要查詢的結果是只顯示甲+乙的戊,還有本來的丙、丁,共三筆資料。
原本的甲、乙就不顯示出來了。


話說~~~
甲跟乙是不同名稱的話,我用MS-SQL試的結果,是不會加在一起的.....
或是你傳個測試用的資料表上來~我再TRY看看....
__________________

歡迎光臨瘋狂火星基地~~
自然進氣可變汽門單缸雙活塞人肉避震

此文章於 2006-02-10 01:45 PM 被 瘋狂火星人 編輯.
舊 2006-02-10, 12:53 PM #8
回應時引用此文章
瘋狂火星人離線中  
gunnertako
Master Member
 

加入日期: Jan 2004
文章: 2,460
我記得改datatime好像不用轉格式的樣子
舊 2006-02-10, 01:25 PM #9
回應時引用此文章
gunnertako離線中  
CyberEric
Basic Member
 
CyberEric的大頭照
 

加入日期: Nov 2002
您的住址: Taipei, Taiwan
文章: 15
SELECT CAST('戊' AS VARCHAR(20)) 名稱,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 名稱

第一行中的VARCHAR(20)可以依據你的table schema修改。

此文章於 2006-02-10 01:53 PM 被 CyberEric 編輯.
舊 2006-02-10, 01:50 PM #10
回應時引用此文章
CyberEric離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是03:36 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。