У меня есть 3 таблицы:
Таблица Счета(Счет, Сумма счета(плавающая), Другая информация...), таблица Платежи(Платеж, Сумма платежа(плавающая), Другая информация...) и таблица < strong>PaymentsDet(Id, Invoice, Payment, Amount(float)). Таблица PaymentsDet связывает счет-фактуру и платеж с суммой (частью счета-фактуры, оплаченной этим платежом).
Мне нужен запрос, возвращающий информацию о каждом счете +
ЕСЛИ (по этому счету есть ровно 1 платеж)
Платеж,СУММА(PayementsDet.Amount), другая информация о платеже...
ИНАЧЕ (более 1 платежа или отсутствие платежа)
Count(Payment), SUM(PayementsDet.Amount), Complete other Payment info со значениями NULL или '' .
Спасибо за ваше время, и надеюсь, что есть кто-то достаточно умный, который может помочь мне в этом.
РЕДАКТИРОВАТЬ :
SELECT Factures.Facture, Factures.Client, Factures.DateFacture, Factures.MoisFacture, Factures.DateRéception, Factures.Echéance, Factures.Montant, Factures.TxTVA,
Factures.Activité,
(SELECT CASE WHEN SUM(Montant) IS NULL THEN '0' ELSE SUM(Montant) END AS Expr1
FROM RèglementsDet
WHERE (Facture = Factures.Facture) AND (Validé = 1)) AS MontantRegl,
(SELECT CASE WHEN COUNT(DISTINCT Règlements.Règlement) > '1' THEN COUNT(DISTINCT Règlements.Règlement)
WHEN COUNT(DISTINCT Règlements.Règlement) = '1' THEN
(SELECT MIN(Règlements.Règlement) AS Expr1
FROM Règlements INNER JOIN
RèglementsDet ON Règlements.Règlement = RèglementsDet.Règlement
WHERE (RèglementsDet.Facture = Factures.Facture)) END AS Règlement
FROM Règlements INNER JOIN
RèglementsDet AS RèglementsDet_2 ON Règlements.Règlement = RèglementsDet_2.Règlement
WHERE (RèglementsDet_2.Facture = Factures.Facture) AND (RèglementsDet_2.Validé = 1)) AS Règlement
FROM Factures LEFT OUTER JOIN
RèglementsDet AS RèglementsDet_1 ON Factures.Facture = RèglementsDet_1.Facture
GROUP BY Factures.Facture, Factures.Client, Factures.DateFacture, Factures.MoisFacture, Factures.DateRéception, Factures.Echéance, Factures.Montant, Factures.TxTVA,
Factures.Activité
Я думаю, что понял это, если у кого-то есть лучший (более читаемый) запрос.