对于不存在的值强制值为0

时间:2010-01-05 15:20:25

标签: sql isnull

小组,我将尽力解释这一点,我希望它能使(某些)有意义。我从我创建的视图中提取数据,该视图告诉我“赞助商”的客户类型以及客户类型中有多少帐户在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可能没有任何已过期1年的RA,因此数据中没有任何内容。所以不要得到:

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。

有什么建议吗?

3 个答案:

答案 0 :(得分:8)

听起来您需要使用LEFT JOIN代替INNER JOIN

答案 1 :(得分:6)

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

答案 2 :(得分:0)

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