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;
我有一个 "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;