2010-10-24 4 views
1

У меня есть два простых запросовРазличные запросы в разделе где, как преобразовать в 1 запрос?

select sum(deb)-sum(cre) as result1 from CXC where id='22731999' 

select sum(deb)-sum(cre) as result2 from CXC where id='22731999' and tipo='IM' 

разница является, где, например, первые результаты запроса в 769686 и второй в 3469, что я должен сделать, чтобы увидеть результат двух запросов в один результат?

result1 result2 
---------------- 
769686 3469 

Я попытался

select sum(C.deb)-sum(C.cre) as Result1 from CXC C where C.id='22731999' 
UNION 
select sum(X.deb)-sum(X.cre) as Result2 from CXC X where X.id='22731999' and .tipo='IM' 

, но это не то, что я хочу, потому что это приводит в 2 ряда

result1 
result2 

Я должен сказать, что я использовал этот запрос под мостом ODBC для подключения Cobol файлы, драйвер tooo старый .. так что sql довольно простой .. У меня есть это ограничение :(

имя драйвера является реляционным DataBridge для RM Cobol

ответ

0

Попробуйте присоединиться. Было бы что-то вроде этого:

выберите сумму (C.deb) -сумма (C.cre) в Result1, сумма (X.deb) -сумма (X.cre), как result2
из СХС C, СХС X
где C.id = '22731999' и X.id = '22731999' и .tipo = 'IM'

+0

whell этот запрос не подходит. Но результат слишком отличается. – 2010-10-24 01:55:25

+0

, вероятно, имеет декартовую продукцию. Может потребоваться добавить первичный ключ в предложение where (например, C.id = X.id) – skimobear

0

Дайте это попробовать

SELECT max(Result1) as Result1, max(Result2) as Result2 
FROM 
    (
    SELECT 
    select sum(C.deb)-sum(C.cre) as Result1, null as Result2 
    from CXC C where C.id='22731999' 
    UNION 
    select null as Result1, sum(X.deb)-sum(X.cre) as Result2 
    from CXC X where X.id='22731999' and .tipo='IM' 
    ) x 
1

Использование:

SELECT SUM(t.deb) - SUM(t.cre) as result1, 
     (SELECT SUM(x.deb) - SUM(x.cre) 
      FROM CXC x 
     WHERE x.id = t.id 
      AND x.tipo = 'IM') AS result2 
    FROM CXC t 
WHERE t.id = '22731999' 

...получить:

result1 result2 
---------------- 
769686 3469 
1

Я думаю об этом, как это ... союз ставит запросы друг на друга. присоединяет запросы друг к другу.

Что делать в этой ситуации это ...

SELECT result1, result2 FROM 
    (select sum(deb)-sum(cre) as result1, id from CXC where id='22731999') query1 
JOIN 
(select sum(deb)-sum(cre) as result2, id from CXC where id='22731999' and tipo='IM') query2 
ON query1.id = query2.id 

Чтобы упростить то, что здесь происходит, просто делать вид, что Query1 представляет собой таблицу, и Query2 представляет собой таблицу

select result1, result2 
from query1 
join query2 on query1.id = query2.id 

Надежда это помогает.

Смежные вопросы