Sql 强制不存在的值为0

Sql 强制不存在的值为0,sql,isnull,Sql,Isnull,小组成员,我将尽我所能解释这一点,我希望它有一定的意义。我从我创建的一个视图中提取数据,该视图告诉我赞助商的客户类型,以及按客户类型划分的这些客户中有多少在1年、2年和3年后处于非活动状态。例如: SponsorID | CustomerType | ExpiredAfter | Total 1234 D 1 Year 5 1234 RA 1 Year 7 1234 CA

小组成员,我将尽我所能解释这一点,我希望它有一定的意义。我从我创建的一个视图中提取数据,该视图告诉我赞助商的客户类型,以及按客户类型划分的这些客户中有多少在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
我遇到的问题是,赞助商可能没有任何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的数据行


有什么建议吗?

听起来您需要使用左连接而不是内部连接。

听起来您需要使用左连接而不是内部连接。

您可能还必须使用ISNULLtotal、0或COALESCEtotal、0,具体取决于您使用的DBMS,以及womp所述的查询。。。因为如果计算了TOTAL,那么从左联接得到的null值仍然会使您没有0值。

您可能还必须使用ISNULLtotal、0或COALESCEtotal、0,具体取决于您使用的DBMS,以及womp所述的查询。。。因为如果计算了TOTAL,那么从左联接得到的空值仍然会使您没有0值。

在我看来,您似乎在寻求积极的报告。尝试使用交叉连接。交叉联接将一个表中的所有行链接到另一个表中的所有行,从而在输出时提供所有可能的结果

在我看来,您似乎在寻求积极的报告。尝试使用交叉连接。交叉联接将一个表中的所有行链接到另一个表中的所有行,从而在输出时提供所有可能的结果

左联接将仅确保支持无值行的空值可见。请参阅timmyd的答案。OP说,只要行存在,0或NULL都可以工作。我相信左连接仍然可以解决这个问题,但是我们似乎都在黑暗中摸索,没有看到相关的查询。左连接只能确保空值对于支持没有值的行是可见的。请参阅timmyd的答案。OP说,只要行存在,0或NULL都可以工作。我相信左路连接仍然可以解决这个问题,但是我们似乎都在黑暗中摸索,没有看到相关的问题。COALESCE是ANSI标准,否则dbs之间的空检查函数不同。IE:NVL代表Oracle,IFNULL代表MySQL,ISNULL代表SQL Server…+1:回答OPs问题。COALESCE是ANSI标准,否则dbs之间的空检查函数不同。IE:NVL代表Oracle,IFNULL代表MySQL,ISNULL代表SQL Server。。。