小组,我将尽力解释这一点,我希望它能使(某些)有意义。我从我创建的视图中提取数据,该视图告诉我“赞助商”的客户类型以及客户类型中有多少帐户在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。
有什么建议吗?
答案 0 :(得分:8)
听起来您需要使用LEFT JOIN
代替INNER JOIN
。
答案 1 :(得分:6)
您可能还必须使用ISNULL(总计,0)或COALESCE(总计0),具体取决于您使用的DBMS和查询(如womp所述)...因为如果计算了TOTAL,那么LEFT JOIN中的空值仍然会让您没有0值。
答案 2 :(得分:0)
在我看来,就像您正在寻求正面报道一样。尝试使用交叉联接。交叉联接将一个表中的所有行链接到另一表中的所有行,从而提供所有可能的结果作为输出