2010-06-03 63 views
-1

如何加入這些查詢?如何在SQL中加入兩個查詢(Oracle)

SELECT RCTDT, SUM(RCTAMOUNT), COUNT(RCTAMOUNT) FROM RECEIPTS4 
WHERE RCTDT BETWEEN '01-nov-2009' AND '30-nov-2009' 
AND RCTTYPE='CA' AND RCTAMOUNT>0 
GROUP BY RCTDT 

--- 

SELECT RCTDT, SUM(RCTAMOUNT), COUNT(RCTAMOUNT) FROM RECEIPTS4 
WHERE RCTDT BETWEEN '01-nov-2009' AND '30-nov-2009' 
AND RCTTYPE='CQ' AND RCTAMOUNT>0 
GROUP BY RCTDT 
+1

你是否想將兩個查詢結果合併爲單行?或者只是想合併查詢? – Sujee 2010-06-03 07:09:45

回答

1

使用IN操作者:

SELECT RCTDT, SUM(RCTAMOUNT), COUNT(RCTAMOUNT) FROM RECEIPTS4 
WHERE RCTDT BETWEEN '01-nov-2009' AND '30-nov-2009' 
AND RCTTYPE IN ('CA','CQ') AND RCTAMOUNT>0 
GROUP BY RCTDT 
0

在該特定示例中,使用一個由IN作爲克萊圖斯建議。在其他情況下,如果不能從相同的選擇產生的兩個結果集,使用UNION的結果結合起來:

SELECT something FROM somewhere 
UNION 
SELECT something FROM somewhere_else 
1

也許你的意思是這個

SELECT RCTDT, 
SUM(case when rcttype='CA' then RCTAMOUNT else null end) as CASUM, 
COUNT(case when rcttype='CA' then RCTAMOUNT else null end) as CACOUNT, 
SUM(case when rcttype='CQ' then RCTAMOUNT else null end) as CQSUM, 
COUNT(case when rcttype='CQ' then RCTAMOUNT else null end) as CQCOUNT, 
FROM RECEIPTS4 
WHERE RCTDT BETWEEN '01-nov-2009' AND '30-nov-2009' 
AND RCTTYPE in('CA','CQ') AND RCTAMOUNT>0 
GROUP BY RCTDT 
0

SELECT RCTDT,SUM(RCTAMOUNT) ,COUNT(RCTAMOUNT)FROM RECEIPTS4 WHERE RCTDT BETWEEN '01 -nov-2009' AND '30 -nov-2009' AND RCTTYPE IN( 'CA', 'CQ')AND RCTAMOUNT> 0 GROUP BY RCTDT

也可能有用。