我有以下问题:
SELECT
tn.Date, b1.Name DrBook, b2.Name CrBook, c1.Name DrControl,
c2.Name CrControl, l1.Name DrLedger, l2.Name CrLedger,
s1.Name DrSubLedger, s2.Name CrSubLedger, p1.Name DrParty,
p2.Name CrParty, m1.Name DrMember, m2.Name CrMember, tn.Amount,
tn.Narration
FROM
Transactions tn
LEFT JOIN
Books b1 ON b1.Id = tn.DrBook
LEFT JOIN
Books b2 ON b2.Id = tn.CrBook
LEFT JOIN
ControlLedgers c1 ON c1.Id = tn.DrControl
LEFT JOIN
ControlLedgers c2 ON c2.Id = tn.CrControl
LEFT JOIN
Ledgers l1 ON l1.Id = tn.DrLedger
LEFT JOIN
Ledgers l2 ON l2.Id = tn.CrLedger
LEFT JOIN
SubLedgers s1 ON s1.Id = tn.DrSubLedger
LEFT JOIN
SubLedgers s2 ON s2.Id = tn.CrSubLedger
LEFT JOIN
Parties p1 ON p1.Id = tn.DrParty
LEFT JOIN
Parties p2 ON p2.Id = tn.CrParty
LEFT JOIN
Members m1 ON m1.Id = tn.DrMember
LEFT JOIN
Members m2 ON m2.Id = tn.CrMember
WHERE
tn.DrControl = 7 OR tn.CrControl = 7
tn.Amount
列是Journal
的数量。要在分类帐中显示它,我必须在我的应用程序中有一些额外的代码,以推送该金额在借方列,如果是tn.CrControl = 7
,或贷方列,如果是tn.DrControl = 7
。
是否可以在我的SQL查询中创建DrAmount
和CrAmount
?
发布于 2020-06-13 12:50:28
您可以使用case表达式来执行此操作:
select
...,
case when tn.CrControl = 7 then tn.Amount end as debit,
case when tn.DrControl = 7 then tn.Amount end as credit
from ...
where 7 in (tn.DrControl, tn.CrControl)
注意,我还重写了where
子句,使用in
而不是or
,这使得它稍微短了一点。
https://stackoverflow.com/questions/62359913
复制