2015-02-02 4 views
0

Я хочу запросить все данные транзакций внутри этой таблицы транзакций и суммировать их соответственно. Данные в таблице, приведенной ниже:Oracle SQL Statement Compare Between 2 Value Different Тип документа

Company PO  Document No Document Type Amount 
001  PO-001 222   OR   2.2 
001  PO-001 222   OR   3.3 
001  PO-001 444   OP   4.4 
001  PO-001 444   OP   5.5 
001  PO-002 555   OP   1.2 
001  PO-002 666   OR   1.2 

Пока общая сумма за тот же номер заказа, но другой тип документа не учетный я должен показать им, как выход ниже:

Company PO  Document_No DocumentType_OR Amount DocumentType_OP Amount_PO 
001  PO-001 222   OR    5.5   OP   9.9 

Разве вы не есть ли какие-либо рекомендации, как я должен это делать? Большое спасибо.

+0

'GROUP BY' с' SUM'. –

+0

Пожалуйста, укажите логику для желаемого вывода. –

ответ

0

Использование Group by и SumAmount

select Company,PO,"Document No","Document Type",sum(Amount) as Amount 
from yourtable 
Where PO = 'PO-001' 
group by Company,PO,"Document No","Document Type" 

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

SELECT Company, 
     PO, 
     Min([Document No]), 
     Max(CASE WHEN "Document Type" = 'OR' THEN "Document Type" END) As Document_Type_OR, 
     Sum(CASE WHEN "Document Type" = 'OR' THEN amount END) AS Amount_OR, 
     Max(CASE WHEN "Document Type" = 'OP' THEN "Document Type" END) As Document_Type_OP, 
     Sum(CASE WHEN "Document Type" = 'OP' THEN amount END) AS Amount_PO 
FROM Yourtable 
WHERE PO = 'PO-001' 
GROUP BY Company,PO 
+1

@ PM77-1 вам не следует использовать «квадратные скобки» в оракуле, чтобы избежать использования «двойных кавычек» '' '' ' –

+0

@ PM77-1: Извините, я просто редактирую свой шаблон вывода. Это должно быть так, что любой совет я могу сделайте это? – goh6319

+1

@ goh6319 - ваш ожидаемый вывод не имеет смысла для меня 'Document_No = 222' не имеет' DocumentType = OP', как вы получили это в Ouptut. –