2014-09-10 2 views
1

У меня есть две таблицы, как подSql Выберите одну из двух таблиц в одном запросе

 SalesDetails       PurchaseDetails 
Date SaleOrderId ProductId Qty  Date PurcsOrderId ProductId Qty 
2/2/12 S_1   P_1  4  1/2/12 PO_1   P_1  50 
3/2/12 S_2   P_1  5  4/2/12 PO_2   P_1  50 
3/2/12 S_2   P_2  7  
6/2/12 S_3   P_1  3 
9/2/12 S_4    1  5 

from these two tables i want to show a report like this 
     Product Inquiry Report 
      ProductId: P_1 
Date  TrId Debit Credit 
1/2/12 PO_1 50     
2/2/12 S_1   4 
3/2/12 S_2   5 
4/2/12 PO_2 50 
6/2/12 S_3   3 

Здесь Кол-во колонке purchasedetails становится «дебет» в докладе и в SalesDetails Кол-во становится колонке «Кредит» в докладе Report.In , транзакция должна быть показана для даты, как показано. Есть ли способ выполнить это в одном запросе, если да, то как? если нет, то есть ли другое решение? Заранее спасибо

ответ

0

SQL Fiddle:

SELECT * 
FROM 
(
    SELECT sa.Date, sa.SaleOrderId AS TRId, Null AS Debit, sa.Qty AS Credit 
    FROM SalesDetails sa 
    UNION 
    SELECT pa.Date, pa.PurcsOrderId AS TRId, pa.Qty AS Debit, Null AS Credit 
    FROM PurchaseDetails pa 
) m 
ORDER BY 1 

Если бы вместо значения будут 0 затем использовать 0 AS Debit и 0 AS Credit соответственно.

+0

Сво больше объяснил форму ответа Булата. Спасибо @Linger :) – Khan

3

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

SELECT Date, SaleOrderID as TrId, NULL as Debit, Qty as Credit 
FROM SalesDetails 
UNION 
SELECT Date, PurcsOrderId AS TrId, Qty AS Debit, NULL as Credit 
FROM PurchaseDetails 
ORDER BY Date 
+0

У вас возникла ошибка в вашей инструкции SQL. – Linger

+0

Обновлено ответ – Bulat

+0

Спасибо V много @Bullat. Его красивая логика – Khan

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