Как объединить два запроса в SQL (Oracle) - PullRequest
0 голосов
/ 03 июня 2010

Как мне присоединиться к этим запросам?

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

Ответы [ 4 ]

1 голос
/ 03 июня 2010

Может быть, вы имели в виду это

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
1 голос
/ 03 июня 2010

Используйте оператор 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 голосов
/ 16 января 2013

ВЫБРАТЬ RCTDT, СУММУ (RCTAMOUNT), СЧЕТ (RCTAMOUNT) ИЗ ПОЛУЧЕНИЙ4 ГДЕ RCTDT МЕЖДУ '01 -nov-2009 'И '30 -nov-2009' И RCTTYPE IN ('CA', 'CQ') И RCTAMOUNT> 0 GROUP BY RCTDT

также может быть полезным.

0 голосов
/ 03 июня 2010

В этом конкретном примере используйте IN, как предложено cletus. В других случаях, когда два набора результатов не могут быть сгенерированы из одного выбора, используйте UNION, чтобы объединить результаты:

SELECT something FROM somewhere
UNION
SELECT something FROM somewhere_else
...