1

集团,我将尽力解释这一点,我希望它(有些)有意义。我正在从我创建的视图中提取数据,该视图告诉我“赞助商”的客户类型,以及按 CustomerType 有多少帐户在 1 年、2 年和 3 年后处于非活动状态。例如:

SponsorID | CustomerType | ExpiredAfter | Total
1234        D              1 Year         5
1234        RA             1 Year         7
1234        CA             1 Year         3
1234        D              2 Years        2
1234        RA             2 Years        4
1234        CA             2 Years        1
1234        D              3 Years        8
1234        RA             3 Years        1
1234        CA             3 Years        6

我遇到的问题是 SponsorID 可能没有任何 RA 过期 1 年,因此数据中没有显示任何内容。所以而不是得到:

SponsorID | CustomerType | ExpiredAfter | Total
1235        D              1 Year         5
1235        RA             1 Year         0
1235        CA             1 Year         3

我得到:

SponsorID | CustomerType | ExpiredAfter | Total
1235        D              1 Year         5
1235        CA             1 Year         3

同样,不确定这是否有任何意义,但我想做的是包括所有 ExpiredAfter 的所有客户类型,无论是否有值。如果没有值,我只想强制为 0 或 Null。出于报告目的,我需要该数据行为 0。

有什么建议么?

4

3 回答 3

8

听起来您需要使用 aLEFT JOIN而不是INNER JOIN.

于 2010-01-05T15:22:33.487 回答
6

您可能还必须使用 ISNULL(total, 0) 或 COALESCE(total, 0) 取决于您使用的 DBMS,以及您的查询(如 womp 所述)......因为如果计算了 TOTAL,则具有空值从 LEFT JOIN 仍然会让您没有 0 值。

于 2010-01-05T15:26:20.693 回答
0

在我看来,您正在寻求积极的报道。尝试使用交叉连接。交叉连接将一个表中的所有行链接到另一个表中的所有行,从而将所有可能的结果作为输出

于 2018-10-22T21:13:23.920 回答