Sql 如何在使用group by的单个查询中获得多个计数记录以及其他记录
我想在用户名条件下,从某个ftable中选择总数据、已完成数据和重命名数据,如果用户名存在,则视为已完成;如果用户名不存在,则视为剩余Sql 如何在使用group by的单个查询中获得多个计数记录以及其他记录,sql,sql-server-2008,Sql,Sql Server 2008,我想在用户名条件下,从某个ftable中选择总数据、已完成数据和重命名数据,如果用户名存在,则视为已完成;如果用户名不存在,则视为剩余 ---------------------------------------- file_nm | degree_nm| date_nm | user_nm ---------------------------------------- X | D_x |02/05/2013| USER3 X | D_x |02
----------------------------------------
file_nm | degree_nm| date_nm | user_nm
----------------------------------------
X | D_x |02/05/2013| USER3
X | D_x |02/05/2014| NULL
Y | D_y |02/05/2012| USER1
z | D_z |02/05/2015| NULL
Y | D_y |02/05/2013| USER1
z | D_z |02/05/2012| USER2
我想要文件,学位,日期,总计文件,剩余文件,完成
file total for x is 2 remaining for x is 1 completed file is 1
我在多个查询中得到了正确的值,但我希望这是一个整体
我要的付款交单
filenm,degree_name,date_name,total,remaining,completed
案件总数:
select filenm,
degree_name,
date_name,
COUNT(*) as total,
sum(case when username is null then 1 else 0 end) as remaining,
sum(case when username is not null then 1 else 0 end) as complete
from sameTable
group by filenm,degree_name,date_name
案件总数:
select filenm,
degree_name,
date_name,
COUNT(*) as total,
sum(case when username is null then 1 else 0 end) as remaining,
sum(case when username is not null then 1 else 0 end) as complete
from sameTable
group by filenm,degree_name,date_name
这不是你使用的方法,拥有,谢谢约翰注意到了这一点,不是我使用的原因:-)。我的错。这不是你使用的方法,拥有,谢谢约翰注意到了这一点,不是我使用的原因:-)。我的错。我的错。只是“,”在总数之后不见了,否则每件事都按我所希望的那样工作。谢谢你“,”在总数之后不见了,除此之外,一切都如我所愿。谢谢你的朋友,谢谢你的时间和努力。但我没有得到我想要的。剩余的每个文件我得到0,完成的文件得到0/1,顺便说一句,你的总数是正确的。感谢朋友为你付出的时间和努力。但是我没有得到我想要的。剩余的每个文件我得到0,完成的文件得到0/1,顺便说一句,你的总数是正确的。
select filenm
,degree_name
,date_name
,total = COUNT(*)
,remaining = COUNT(DISTINCT CASE WHEN username is null THEN username ELSE NULL END)
,completed = COUNT(DISTINCT CASE WHEN username is not null THEN username ELSE NULL END)
from sameTable
group by filenm,degree_name,date_name