Sql 我能在*一个字段*上加一个Where子句吗?
我在一个表中有数据 我可以编写sql来返回每个员工的案例数,如下所示:Sql 我能在*一个字段*上加一个Where子句吗?,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我在一个表中有数据 我可以编写sql来返回每个员工的案例数,如下所示: select Staff, Count(Staff) as cases from caseload group by Staff select Staff, count(Staff) as oldcases from caseload where "Days from lc" >= 21 group by Staff 我还可以编写sql来返回每个员工的旧案例数,如下所示: select Staff, Count(S
select Staff, Count(Staff) as cases
from caseload
group by Staff
select Staff, count(Staff) as oldcases
from caseload
where "Days from lc" >= 21
group by Staff
我还可以编写sql来返回每个员工的旧案例数,如下所示:
select Staff, Count(Staff) as cases
from caseload
group by Staff
select Staff, count(Staff) as oldcases
from caseload
where "Days from lc" >= 21
group by Staff
我的问题是,如何将这两个查询结合起来,得到一个包含三列的结果集:员工、案例、旧案例?每行应包含工作人员姓名、该工作人员的案例数量以及该工作人员超过21天的案例数量
看起来我应该把where子句放在oldcases字段上,但这不可能是正确的。我知道我缺少一些非常基本的东西。您可以使用条件聚合:
select Staff, Count(Staff) as cases,
COUNT(CASE WHEN "Days from lc" >= 21 THEN 1 END) AS oldcases
from caseload
group by Staff;
select Staff, Count(*) as cases,
sum(case when "Days from lc" >= 21 then 1 else 0 end) as older_cases
from caseload
group by Staff;
您可以使用条件聚合:
select Staff, Count(Staff) as cases,
COUNT(CASE WHEN "Days from lc" >= 21 THEN 1 END) AS oldcases
from caseload
group by Staff;
select Staff, Count(*) as cases,
sum(case when "Days from lc" >= 21 then 1 else 0 end) as older_cases
from caseload
group by Staff;
使用条件聚合:
select Staff, Count(Staff) as cases,
COUNT(CASE WHEN "Days from lc" >= 21 THEN 1 END) AS oldcases
from caseload
group by Staff;
select Staff, Count(*) as cases,
sum(case when "Days from lc" >= 21 then 1 else 0 end) as older_cases
from caseload
group by Staff;
我不鼓励你用特殊字符来命名专栏。每次引用名称时都必须转义它们是一件麻烦事。使用条件聚合:
select Staff, Count(Staff) as cases,
COUNT(CASE WHEN "Days from lc" >= 21 THEN 1 END) AS oldcases
from caseload
group by Staff;
select Staff, Count(*) as cases,
sum(case when "Days from lc" >= 21 then 1 else 0 end) as older_cases
from caseload
group by Staff;
我不鼓励你用特殊字符来命名专栏。每次你提到这些名字时,都要避开它们是一件麻烦事