SQL 服务器查询以根据案例计数显示所有用户

SQL Server query to display all users based on case count

我有一个 "users" table 如下

User_Id  User_Name Case_Id   Create_Date     Close_date
--------------------------------------------------------

1         abc        65473      2018-03-14   2018-03-15
2         xyz        43526      2018-03-14     NULL
3         gst        49088      2018-03-11     NULL

我想显示如下输出,当天(2018-03-16)没有打开案例的用户也应该显示

User_ID   User_Name  Case_Count

1            abc       0
2            xyz       1
3            gst       1

我写了下面的查询来实现这个

select user_name,isnull(count(CASE_ID),'0') as case_id from users where CLOSE_DATE is NULL group by user_name

但我没有得到我想要的输出,而是得到了这个

User_ID   User_Name  Case_Count

2            xyz       1
3            gst       1

谁能帮我解决这个问题,因为我是 SQL 服务器的新手

因为你有 where CLOSE_DATE is NULL 你不会得到第一行,因为它有一个结束日期的值。

将您的查询更改为以下内容以使其生效:

select user_name,count(isnull(CASE_ID),'0') as case_id from users group by user_name

听起来您想要一个仍未结案件数量的条件 SUM?

在这种情况下,您只想包括 CLOSE_DATE IS NULL 的情况计数,但不想忽略 CLOSE_DATE IS NOT NULL 的行,只需将它们的总数显示为 0:

   SELECT
      user_name,
      SUM(CASE WHEN CLOSE_DATE IS NULL THEN 1 ELSE 0 END) AS CASE_COUNT
    FROM users 
    GROUP BY user_name;

编辑: 您的结果集中似乎有 user_id,但没有源查询,因此可能想要包括...

SELECT
  user_id,
  user_name,
  SUM(CASE WHEN CLOSE_DATE IS NULL THEN 1 ELSE 0 END) AS CASE_COUNT
FROM users 
GROUP BY user_id, user_name;