SQL 查询中子查询列的条件

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

我正在执行带有子查询的 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.