SQL QUERY在使用COUNT时显示NULL值

时间:2017-09-27 12:17:26

标签: sql-server

我需要通过他们的雇主(几个不同的雇主,而不仅仅是1个)注册的健康俱乐部会员数量,每月会员资格以及他们的会员资格加上他们的家庭成员。我遇到的问题是,目前我们没有任何LEVEL D会员资格,但可能在将来。如果没有会员资格,我需要报告显示“0”。我试过了

COUNT(DISTINCT CUSTOMER_ID) + 
  COUNT(CASE WHEN CUSTOMER_ID IS NULL THEN 1 END) AS NUMBER_OF_CUSTOMERS  

它没有用,任何帮助都表示赞赏。

SELECT
    MEMBERSHIP_TYPE,
    COUNT(DISTINCT CUSTOMER_ID) AS NUMBER_OF_CUSTOMERS,
    COUNT(CASE WHEN CUSTOMER_RELATION = ‘FAMILYMEMBER’ THEN 1 END) AS FAMILY_MEMBERS,
    COUNT(DISTINCT CUSTOMER_ID) + COUNT(CASE WHEN CUSTOMER_RELATION    ‘FAMILY_MEMBERS’ THEN 1 END) AS TOTAL

这是我目前得到的

MEMBERSHIP_TYPE  NUMBER_OF_CUSTOMERS    FAMILY_MEMBERS  TOTAL
-------------------------------------------------------------
LEVEL A                 100                  25           125
LEVEL B                 630                 340           970
LEVEL C                1201                 630          1831

我需要这个

MEMBERSHIP_TYPE  NUMBER_OF_CUSTOMERS    FAMILY_MEMBERS  TOTAL
-------------------------------------------------------------
LEVEL A                 100                  25           125
LEVEL B                 630                 340           970
LEVEL C                1201                 630          1831
LEVEL D                   0                   0             0

1 个答案:

答案 0 :(得分:0)

您将把值硬编码到select语句中。将UNION ALL添加到SQL语句

..your current select statement
UNION
SELECT LEVEL D, 0,0,0;

当在表格中输入D级时,更新的值将正确显示。