表A:部门编号 部门名称
DepartID varchar(100) DepartName varchar(50)
A 最高级主管部门
A01 人力资源部
A02 财务部
A03 制造部
A0301 装配一车间
A0302 装配二车间
A04 销售部 。。表B:
部门编号 员工编号 卡号 员工姓名
DepartID(nvarchar)50 EmpID(nvarchar)50 CardNO(nvarchar)12 EmpName nvarchar 50
A01 HR3002 8671050 AAA
A01 HR3003 4348980 BBB
A0301 MA0301 8876015 CCC
A02 FA001 8681050 DDD
A0302 MA0302 88001060 EEE
表C:
DepartID nvarchar 50 部门编号
EmpID nvarchar 30 员工编号
MorningCount smallint 2 早餐次数
AfternoonCount smallint 2 午餐次数
EveningCount smallint 2 晚餐次数
OtherCount smallint 2 其他餐次数记录:
A01 HR3002 4 8 3 5
A01 HR3003 6 3 6 4
A0301 MA0301 1 3 5 3
A0302 MA0302 0 0 0 0
A02 FA001 6 4 6 0
求一个SQL语句,查询结果为:
部门编号,部门名称 早餐合计 午餐合计 晚餐合计 其他餐合计
A 最高级部门 17 18 20 12
A01 人力资源部 10 11 9 9
A02 财务部 6 4 6 0
A03 制造部 1 3 5 3
A0301 装配一车间 1 3 3 3
A0302 装配二车间 0 0 0 0
A04 销售部 0 0 0 0
DepartID varchar(100) DepartName varchar(50)
A 最高级主管部门
A01 人力资源部
A02 财务部
A03 制造部
A0301 装配一车间
A0302 装配二车间
A04 销售部 。。表B:
部门编号 员工编号 卡号 员工姓名
DepartID(nvarchar)50 EmpID(nvarchar)50 CardNO(nvarchar)12 EmpName nvarchar 50
A01 HR3002 8671050 AAA
A01 HR3003 4348980 BBB
A0301 MA0301 8876015 CCC
A02 FA001 8681050 DDD
A0302 MA0302 88001060 EEE
表C:
DepartID nvarchar 50 部门编号
EmpID nvarchar 30 员工编号
MorningCount smallint 2 早餐次数
AfternoonCount smallint 2 午餐次数
EveningCount smallint 2 晚餐次数
OtherCount smallint 2 其他餐次数记录:
A01 HR3002 4 8 3 5
A01 HR3003 6 3 6 4
A0301 MA0301 1 3 5 3
A0302 MA0302 0 0 0 0
A02 FA001 6 4 6 0
求一个SQL语句,查询结果为:
部门编号,部门名称 早餐合计 午餐合计 晚餐合计 其他餐合计
A 最高级部门 17 18 20 12
A01 人力资源部 10 11 9 9
A02 财务部 6 4 6 0
A03 制造部 1 3 5 3
A0301 装配一车间 1 3 3 3
A0302 装配二车间 0 0 0 0
A04 销售部 0 0 0 0
,sum(isnull(AfternoonCount,0) ) as '午餐合计'
,sum(isnull(EveningCount ,0) ) as '晚餐合计'
,sum(isnull(OtherCount ,0) ) as '其他餐合计 '
from A Left join C On A.DepartID =C.DepartID
,sum(isnull(C.AfternoonCount,0) ) as '午餐合计'
,sum(isnull(C.EveningCount ,0) ) as '晚餐合计'
,sum(isnull(C.OtherCount ,0) ) as '其他餐合计 '
from A Left join C On A.DepartID =C.DepartID
group by A.DepartID,A.DepartName
t.DepartName as 部门名称,
case t.DepartID when 'A' then (select sum(MorningCount) from 表C) else
isnull(r.MorningCount,0) end as 早餐合计,
case t.DepartID when 'A' then (select sum(AfternoonCount) from 表C) else
isnull(r.AfternoonCount,0) end as 午餐合计,
case t.DepartID when 'A' then (select sum(EveningCount) from 表C) else
isnull(r.EveningCount,0) end as 晚餐合计,
case t.DepartID when 'A' then (select sum(OtherCount) from 表C) else
isnull(r.OtherCount,0) end as 其他餐合计
from 表A t left join 表C r
on t.DepartID=r.DepartID
select t.DepartID as 部门编号,
t.DepartName as 部门名称,
case t.DepartID when 'A' then (select sum(MorningCount) from 表C) else
isnull(r.MorningCount,0) end as 早餐合计,
case t.DepartID when 'A' then (select sum(AfternoonCount) from 表C) else
isnull(r.AfternoonCount,0) end as 午餐合计,
case t.DepartID when 'A' then (select sum(EveningCount) from 表C) else
isnull(r.EveningCount,0) end as 晚餐合计,
case t.DepartID when 'A' then (select sum(OtherCount) from 表C) else
isnull(r.OtherCount,0) end as 其他餐合计
from 表A t left join
(select DepartID,sum(MorningCount) as MorningCount,sum(AfternoonCount) as AfternoonCount,
sum(EveningCount) as EveningCount,sum(OtherCount) as OtherCount
from 表C
group by DepartID)r
on t.DepartID=r.DepartID
select t1.DepartID as 部门编号 ,t1.DepartName as部门名称,
sum(isnull(t2.MorningCount,0)) as '早餐合计'
,sum(isnull(t2.AfternoonCount,0) ) as '午餐合计'
,sum(isnull(t2.EveningCount ,0) ) as '晚餐合计'
,sum(isnull(t2.OtherCount ,0) ) as '其他餐合计 '
from A t1 Left join C t2 On t1.DepartID =t2.DepartID
group by t1.DepartID,t1.DepartName