sql查询中子查询列的条件

问题描述 投票:0回答:1

我正在执行带有子查询的 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,则该行不显示不想展示。

sql sql-server where-clause
1个回答
0
投票

一个简单的方法是使用公用表表达式,这样您就不需要重复计算:

WITH MyCTE
AS (
   ... put your query here ...
)
SELECT *
FROM   MyCTE
WHERE  Goldfine > 0 OR SilverFine > 0 OR Amount > 0
© www.soinside.com 2019 - 2024. All rights reserved.