【问题标题】:Return Results on Right Outer Join on empty table with where condtion在具有 where 条件的空表上返回右外连接的结果
【发布时间】:2015-11-04 04:38:42
【问题描述】:

所以我试图从billing_monthly_verizon_charges_detail_archive 返回 12 个月的数据,但如果没有删除条件 verizon.ITEM_DESCRIPTION <> 'Payment Received',我无法找到在没有数据的情况下返回 0 的方法。我明白为什么它没有返回任何数据,但我怎样才能让它在每个月份都返回 0 invoice_date table 并带有条件 - 这是有数据时需要的。

SELECT 'H. Verizon' AS category, CONVERT(VARCHAR(7), id.INVOICE_DATE, 111) AS invoice_date, ISNULL(SUM(verizon.COST), 0.00) AS total_charges
FROM BILLING_MONTHLY_VERIZON_CHARGES_DETAIL_ARCHIVE AS verizon 
RIGHT OUTER JOIN
INVOICE_DATES AS id ON verizon.BILL_CYCLE_DATE = id.INVOICE_DATE
WHERE(id.INVOICE_DATE BETWEEN @BillingMonthMinus13 AND @BillingMonth) AND (verizon.ITEM_DESCRIPTION <> 'Payment Received')
GROUP BY id.INVOICE_DATE

【问题讨论】:

标签: tsql conditional-statements outer-join


【解决方案1】:
COALESCE(verizon.ITEM_DESCRIPTION,'') <> 'Payment Received'

【讨论】:

    【解决方案2】:

    考虑:

    SELECT  
        'H. Verizon' AS category, 
        CONVERT(VARCHAR(7), INVOICE_DATE,111) AS invoice_date, 
        ISNULL(SUM(COST), 0.00) AS total_charges
    FROM 
        (SELECT 
            INVOICE_DATE
        FROM
            INVOICE_DATES 
        WHERE
            INVOICE_DATE BETWEEN @BillingMonthMinus13 AND @BillingMonth ) id    LEFT OUTER JOIN
        (SELECT
            BILL_CYCLE_DATE, 
            COST
        FROM
            BILLING_MONTHLY_VERIZON_CHARGES_DETAIL_ARCHIVE
        WHERE
            ITEM_DESCRIPTION <> 'Payment Received'  ) verizon   ON 
        BILL_CYCLE_DATE = INVOICE_DATE
    GROUP BY 
        INVOICE_DATE
    

    【讨论】:

      猜你喜欢
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2010-12-02
      • 1970-01-01
      • 2013-09-13
      • 2012-12-27
      • 1970-01-01
      相关资源
      最近更新 更多