다음 두 테이블이 있습니다.
금전 등록기
Date PaymentId CustId VenId Debit Credit Date
=========================================================
2/2/12 Pay_1 Cus_1 444 3/2/2012
4/2/12 Pay_2 Ven_1 555
판매 주문
SaleOrderId CustId Debit Credit
==================================
So_1 Cus_1 666
이 두 테이블 에서 다음과 같은 저널 보고서 를 생성해야합니다 .
Date TrId AccountId Debit Credit
========================================
2/2/12 Pay_1 Cus_1 444
3/3/12 So_1 Cus_1 666
4/2/12 Pay_2 Ven_1 555
이 쿼리를 시도했습니다.
SELECT *
FROM (
SELECT Date, PaymentId, TrId, CustId, AccountId, VenId, AccountId, Debit,
Credit
FROM CashRegister
UNION
SELECT Date, SaleOrderId, TrId, CustId, AccountId, Debit, Credit
FROM SalesOrder
) t
ORDER BY Date
그러나 다음과 같은 오류가 발생합니다.
Union에서 표현식의 수는 대상 목록과 같아야합니다.
CashRegister 테이블에서 CustId 또는 VenId를 사용하려는 것 같습니다. 그렇다면 이것이 원하는 것이라고 생각합니다.
SELECT
Date,
PaymentId AS TrId,
COALESCE(CustId, VenId) AS AccountId, -- COALESCE returns the first
Debit, -- non null value as AccountId
Credit
FROM CashRegister
UNION -- use UNION ALL if you don't want to eliminate duplicate rows.
SELECT
Date,
SaleOrderId,
CustId,
Debit,
Credit
FROM SalesOrder
ORDER BY Date
샘플 SQL Fiddle
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다