2017-09-22 2 views
-2
SELECT 
    SUM(CASE 
     WHEN db1.card_type = 'debit' THEN 1 
     ELSE 0 
    END) AS DEBIT, 
    SUM(CASE 
     WHEN db1.card_type = 'credit' THEN 1 
     ELSE 0 
    END) AS CREDIT, 
    DATE_FORMAT(Latest, '%Y-%m') AS Dato 
FROM 
    (SELECT 
     pp.debtor_id, pp.card_type, MAX(pp.created) AS Latest 
    FROM 
     capital.credit_card cc 
    JOIN capital.card_to_debtor ctd ON cc.id = ctd.card_id 
     AND debtor_id IN (SELECT 
      fs.debtor_id, fs.created, fs.reason 
     FROM 
      analysis.full_settlement fs 
     WHERE 
      ((reason = 'BANK_PAYMENT' 
       OR fs.reason = 'CARD_PAYMENT') 
       AND fs.amount < 0) 
       OR fs.REASON = 'TRIVIAL_BALANCE' 
       OR fs.id = 13793327 
       OR fs.id = 7451808) 
    JOIN analysis.full_settlement fs ON fs.debtor_id = ctd.debtor_id 
    JOIN (SELECT 
     p.debtor_id, ccc.card_type, p.created 
    FROM 
     capital.payment p 
    JOIN capital.card_subscription cs ON cs.id = p.subscription_id 
    JOIN (SELECT 
     cc.id, ctd.card_id, cc.card_type, ctd.debtor_id 
    FROM 
     capital.card_to_debtor ctd 
    JOIN capital.credit_card cc ON cc.id = ctd.card_id) ccc ON ccc.card_id = cs.card_id 
     AND ccc.debtor_id = p.debtor_id) pp ON fs.debtor_id = pp.debtor_id 
     AND pp.created <= fs.created 
    GROUP BY pp.debtor_id , fs.created) db 
     JOIN 
    (SELECT 
     p.debtor_id, ccc.card_type, p.created 
    FROM 
     capital.payment p 
    JOIN capital.card_subscription cs ON cs.id = p.subscription_id 
    JOIN (SELECT 
     cc.id, ctd.card_id, cc.card_type, ctd.debtor_id 
    FROM 
     capital.card_to_debtor ctd 
    JOIN capital.credit_card cc ON cc.id = ctd.card_id) ccc ON ccc.card_id = cs.card_id 
     AND ccc.debtor_id = p.debtor_id) db1 ON db1.debtor_id = db.debtor_id 
     AND db1.created = db.Latest 
GROUP BY YEAR(Latest) , MONTH(Latest) 
+0

Bitte seien Sie genauer. Auf welcher Linie tritt der Fehler auf? Welcher Operand? Lassen Sie Ihren Code nicht einfach hier ab und erwarten Sie, dass die Benutzer herausfinden, was Sie meinen. – waka

+0

Er sagt es mir nicht. Was ziemlich frustrierend ist –

+0

Dann müssen Sie die Abfrage verkleinern, um den Teil zu identifizieren, wo der Fehler auftritt. Es ist ziemlich schwer zu verstehen, was Sie mit allen Subselects zu tun versuchen. – waka

Antwort

1
debtor_id IN (SELECT 
      fs.debtor_id, fs.created, fs.reason 

debtor_id ist eine Spalte, so dass man sich nur zu einer anderen Spalte vergleichen. Ändern Sie es in

debtor_id IN (SELECT 
       fs.debtor_id FROM... 
+0

Perfekt! Vielen Dank! –

Verwandte Themen