Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我能在*一个字段*上加一个Where子句吗?_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

Sql 我能在*一个字段*上加一个Where子句吗?

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

我在一个表中有数据

我可以编写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(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;
我不鼓励你用特殊字符来命名专栏。每次你提到这些名字时,都要避开它们是一件麻烦事