Tsql 返回具有where条件的空表上右外部联接的结果
因此,我试图从billing_monthly_verizon_charges_detail_archive返回12个月的数据,如果没有删除条件verizon.ITEM_DESCRIPTION“Payment Received”,我无法找到在没有数据时返回0的方法。我知道它为什么不返回任何数据,但如何让它在有条件的情况下为每个月的invoice_date表返回0,这是有数据时需要的Tsql 返回具有where条件的空表上右外部联接的结果,tsql,conditional-statements,outer-join,Tsql,Conditional Statements,Outer Join,因此,我试图从billing_monthly_verizon_charges_detail_archive返回12个月的数据,如果没有删除条件verizon.ITEM_DESCRIPTION“Payment Received”,我无法找到在没有数据时返回0的方法。我知道它为什么不返回任何数据,但如何让它在有条件的情况下为每个月的invoice_date表返回0,这是有数据时需要的 SELECT 'H. Verizon' AS category, CONVERT(VARCHAR(7), id.IN
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
考虑:
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
考虑:
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