我正在执行带有子查询的 SQL 查询,并且我希望该子查询的条件大于零
这是我的sql查询,
SELECT Ledger.Grup,
ledger.CompanyName,
ledger.City,
ledger.ContactNo,
( isnull((SELECT sum(ConditionFine)
FROM tbl_Billing
WHERE partyid = ledger_id
AND partytype = 'GOLD'
AND CrDr = 'CR'
AND AccountMode = 'ESTIMATE'
AND BranchId = 13), 0) - isnull((SELECT sum(ConditionFine)
FROM tbl_Billing
WHERE partyid = ledger_id
AND partytype = 'GOLD'
AND CrDr = 'DR'
AND AccountMode = 'ESTIMATE'
AND BranchId = 13), 0) ) AS GoldFine,
( isnull((SELECT sum(ConditionFine)
FROM tbl_Billing
WHERE partyid = ledger_id
AND partytype = 'SILVER'
AND CrDr = 'CR'
AND AccountMode = 'ESTIMATE'
AND BranchId = 13), 0) - isnull((SELECT sum(ConditionFine)
FROM tbl_Billing
WHERE partyid = ledger_id
AND partytype = 'SILVER'
AND CrDr = 'DR'
AND AccountMode = 'ESTIMATE'
AND BranchId = 13), 0) ) AS SilverFine,
( isnull((SELECT sum(AfterTax)
FROM tbl_Billing
WHERE partyid = ledger_id
AND CrDr = 'CR'
AND AccountMode = 'ESTIMATE'
AND BranchId = 13), 0) - isnull((SELECT sum(AfterTax)
FROM tbl_Billing
WHERE partyid = ledger_id
AND CrDr = 'DR'
AND AccountMode = 'ESTIMATE'
AND BranchId = 13), 0) ) AS Amount
FROM tbl_Billing billing
LEFT OUTER JOIN tbl_Ledger ledger
ON ledger.Ledger_ID = billing.partyid
WHERE billing.BranchID = 13
AND Ledger.CompanyName IS NOT NULL
AND AccountMode = 'ESTIMATE'
现在,根据此查询,我想要 Goldfine > 0、SilverFine > 0、Amount > 0,即如果这三列中的任何一个值大于 0,则显示条件行数据,否则如果这些列等于 0,则该行不显示不想展示。
一个简单的方法是使用公用表表达式,这样您就不需要重复计算:
WITH MyCTE
AS (
... put your query here ...
)
SELECT *
FROM MyCTE
WHERE Goldfine > 0 OR SilverFine > 0 OR Amount > 0