当前位置: 代码迷 >> Sql Server >> 两个表连接查询的有关问题
  详细解决方案

两个表连接查询的有关问题

热度:17   发布时间:2016-04-24 09:59:47.0
两个表连接查询的问题
tablea 记录正在进行的工作任务
worker_name job_name
张三                   扫地
李四                  擦桌子
张三                  扫地


tableb记录已经完成的任务
worker_name job_name
张三                   擦桌子
李四                  扫地
王五                  擦桌子
李四                 擦桌子


现在想通过一条语句来获取到下面的信息,由于条件限制,不能使用临时表

worker_name 已完成任务数量  未完成任务数量
张三                  1                             2
李四                  2                             1
王五                  1                             0
------解决思路----------------------
if OBJECT_ID ('tb') is not null
drop table tb
go
if OBJECT_ID ('tb1') is not null
drop table tb1
go
create table tb (worker_name varchar(10), job_name varchar(10))
insert into  tb
select  '张三','扫地'    union all 
select  '李四','擦桌子'  union all 
select  '张三','扫地'
go 
create table tb1 (worker_name varchar(10), job_name varchar(10))
insert into  tb1
select  '张三','擦桌子' union all 
select  '李四','扫地'   union all 
select  '王五','擦桌子' union all 
select  '李四','擦桌'

go
select  worker_name, 
SUM(case when  是否完成=1 then 1 else 0 end  ) as [已完成],
SUM(case when  是否完成=0 then 1 else 0 end  ) as [未完成]
from 
(
select  worker_name,job_name ,'0' as 是否完成 from tb 
union all
select  worker_name,job_name ,'1'  as 是否完成 from tb1 

)t group  by worker_name


--worker_name 已完成 未完成
--李四 2 1
--王五 1 0
--张三 1 2

  相关解决方案