2016-03-31 14 views
0

ödenen nerede dayalı filtreleme kayıtları Şu anda faturalandırıldıkları zaman ve ben randevu için ödenen ne zaman göre filtrelemeye çalıştığım kayıtları bir liste var Sadece kayıtları istiyorum müşteri fatura ve onların randevusu vardı yani gelecek aya kadar ödeme yapmadı ve MartMüşteriler bir ay faturalandırıldı ve başka bir

bugüne kadar

Benim sorgu kadar Feb ama hiç ödeme cinsinden fatura edildi: Benim varsayarak için

SELECT TRANS.WHENTRANS ACDATE, 
    TRANS.AMTUNRES UNPAID, 
    TRANS.TRANTYPE, 
    TRANS.INCPROVCODE IPROV, 
    ACHOLDERACH.ACBALANCE BALANCE, 
    ACHOLDERANY.PREFORMATTEDINTERN ACCOUNTNAMECHART, 
    Amount 
FROM ( TRANS 
    LEFT JOIN ACHOLDER ACHOLDERACH ON ACHOLDERACH.ACHOLDERID = TRANS.ACHOLDERID) 
    LEFT JOIN ANYBODY ACHOLDERANY ON ACHOLDERANY.ANYBODYID = TRANS.ACHOLDERID 



where TranType = 'I' and amount = x 
and TranType = 'P' and amount = -x and date = current month 
+0

Sorgunuzdaki üç tablodan bazı örnek veriler gönderir misiniz? –

cevap

1

çalıştı aşağıdaki Fatura ve Ödeme, tabloda iki ayrı satırdır.

CREATE TABLE #TEST (ACDATE DATE, UNPAID VARCHAR(1), TRANTYPE VARCHAR(1), IPROV VARCHAR(5), ACBALANCE FLOAT, ACCOUNTNAMECHART VARCHAR(100), AMOUNT FLOAT) 
INSERT INTO #TEST 
(ACDATE, UNPAID, TRANTYPE, IPROV, ACBALANCE, ACCOUNTNAMECHART, AMOUNT) 
VALUES 
('8/1/2016', 'Y', 'I', '003', 0, 'TESTNAME', 150.50), 
('9/1/2016', 'N', 'P', '003', 0, 'TESTNAME',150.50) 
SELECT A.ACDATE AS INVOICEDATE, A.AMOUNT AS INVOICEAMT, B.ACDATE AS PAYMENTDATE, B.AMOUNT AS PAYMENTAMT 
FROM 
(
    SELECT * 
    FROM #TEST 
    WHERE TRANTYPE = 'I' 
) A 
LEFT JOIN 
(
    SELECT * 
    FROM #TEST 
    WHERE TRANTYPE = 'P' 
) B ON A.ACCOUNTNAMECHART = B.ACCOUNTNAMECHART -- OR YOU CAN USE WHATEVER KEY FIELDS YOU HAVE TO HOOK TH INVOICE TO THE PAYMENT 
WHERE MONTH(A.ACDATE) = MONTH(DATEADD(MM,-1,B.ACDATE))