表A:部门信息表departid(部门代码)varchar 100 departname (部门名称)varchar 30 departempCount (部门人数) int
A **公司
A01 总务部
A0101 人事部
A0102 公关部
A02 制造部
A0201 装配一车间
A0202 装配二车间
A03 财务部
A04 销售部
。。表B :员工信息表
Code nvarchar 50
Cardid nvarchar 50
UserName nvarchar 50
DepartID nvarchar 50
HR1001 8198293 AAA A01
SA8005 2052126 BBB A03
.....表C:就餐时段表
EatName char 10
StartTime datetime 8
EndTime datetime 8
Price money 8 晚餐 17:00:00 23:00:00 12
午餐 11:00:00 16:00:00 8
早餐 06:00:00 08:00:00 6
....EmployeeID varchar 20 1
CheckDate datetime 8 1
CheckTime varchar 8 1
Morning int 4 1
AfterNoon int 4 1
Evening int 4 1
Other int 4 1
Price int 4 1
MachineID int 4 1
AllTime datetime 8 1HR1001 2010-06-06 21:21:00 0 0 1 0 12 2 2010-06-06 21:21:00
HR1001 2010-06-06 07:22:00 1 0 0 0 6 2 2010-06-06 21:22:00
SA8005 2010-06-06 14:22:00 0 1 0 0 8 2 2010-06-06 21:22:00
SA8005 2010-06-06 7:25:00 1 0 0 0 6 2 2010-06-06 21:22:00
.....求一SQL语句,要求实现的结果是:部门代码 部门名称 早餐次数 早餐金额 午餐次数 午餐金额 晚餐次数 晚餐金额 其他餐次数 其他餐金额 合计金额
A **公司 2 12 1 8 1 12 0 0 32
A01 总务部 1 6 0 0 1 12 0 0 18
A02 制造部 1 6 1 8 0 0 0 0 14
A03 财务部 0 0 0 0 0 0 0 0 0
.....也就是对各部门和各时段的餐次进行汇总,下级部门要汇总到上级部门中,比如部门代码A0101的数据要汇总到部门代码A01中,而A01中的数据要汇总到A中
A **公司
A01 总务部
A0101 人事部
A0102 公关部
A02 制造部
A0201 装配一车间
A0202 装配二车间
A03 财务部
A04 销售部
。。表B :员工信息表
Code nvarchar 50
Cardid nvarchar 50
UserName nvarchar 50
DepartID nvarchar 50
HR1001 8198293 AAA A01
SA8005 2052126 BBB A03
.....表C:就餐时段表
EatName char 10
StartTime datetime 8
EndTime datetime 8
Price money 8 晚餐 17:00:00 23:00:00 12
午餐 11:00:00 16:00:00 8
早餐 06:00:00 08:00:00 6
....EmployeeID varchar 20 1
CheckDate datetime 8 1
CheckTime varchar 8 1
Morning int 4 1
AfterNoon int 4 1
Evening int 4 1
Other int 4 1
Price int 4 1
MachineID int 4 1
AllTime datetime 8 1HR1001 2010-06-06 21:21:00 0 0 1 0 12 2 2010-06-06 21:21:00
HR1001 2010-06-06 07:22:00 1 0 0 0 6 2 2010-06-06 21:22:00
SA8005 2010-06-06 14:22:00 0 1 0 0 8 2 2010-06-06 21:22:00
SA8005 2010-06-06 7:25:00 1 0 0 0 6 2 2010-06-06 21:22:00
.....求一SQL语句,要求实现的结果是:部门代码 部门名称 早餐次数 早餐金额 午餐次数 午餐金额 晚餐次数 晚餐金额 其他餐次数 其他餐金额 合计金额
A **公司 2 12 1 8 1 12 0 0 32
A01 总务部 1 6 0 0 1 12 0 0 18
A02 制造部 1 6 1 8 0 0 0 0 14
A03 财务部 0 0 0 0 0 0 0 0 0
.....也就是对各部门和各时段的餐次进行汇总,下级部门要汇总到上级部门中,比如部门代码A0101的数据要汇总到部门代码A01中,而A01中的数据要汇总到A中
A **公司 2 1 1 0 32
A01 总务部 1 0 1 0 18
A02 制造部 1 1 0 0 14
A03 财务部 0 0 0 0 0 0 0 0 0次数统计出来了,不过各时段的金额没有上去,正在苦恼中。,还希望高手出来点拨
EmployeeID varchar 20 1
CheckDate datetime 8 1
CheckTime varchar 8 1
Morning int 4 1
AfterNoon int 4 1
Evening int 4 1
Other int 4 1
Price int 4 1
MachineID int 4 1
AllTime datetime 8 1HR1001 2010-06-06 21:21:00 0 0 1 0 12 2 2010-06-06 21:21:00
HR1001 2010-06-06 07:22:00 1 0 0 0 6 2 2010-06-06 21:22:00
SA8005 2010-06-06 14:22:00 0 1 0 0 8 2 2010-06-06 21:22:00
SA8005 2010-06-06 7:25:00 1 0 0 0 6 2 2010-06-06 21:22:00
.....
col1 col2 ......
val1 val2 ......tbname2
col1 col2 ......
val1 val2 ......
IF OBJECT_ID('[tba]') IS NOT NULL
DROP TABLE [tba]
GO
CREATE TABLE [tba] (departid varchar (100), departname varchar (30), departempCount int)
INSERT INTO [tba]
SELECT 'A', '**公司',null union all
SELECT 'A01', ' 总务部',null union all
SELECT 'A0101', ' 人事部',null union all
SELECT 'A0102', ' 公关部',null union all
SELECT 'A02', ' 制造部 ',null union all
SELECT 'A0201', ' 装配一车间',null union all
SELECT 'A0202', ' 装配二车间',null union all
SELECT 'A03', ' 财务部',null union all
SELECT 'A04', ' 销售部',null
GO
IF OBJECT_ID('[tbb]') IS NOT NULL
DROP TABLE [tbb]
GO
CREATE TABLE [tbb] (Code nvarchar(50),Cardid nvarchar (50),UserName nvarchar (50),DepartID nvarchar (50) )
INSERT INTO [tbb]
SELECT 'HR1001','8198293','AAA','A01' union all
SELECT 'SA8005','2052126','BBB','A03'
GO
IF OBJECT_ID('[tbc]') IS NOT NULL
DROP TABLE [tbc]
GO
CREATE TABLE [tbc] (EatName char (10),StartTime datetime,EndTime datetime,Price money )
INSERT INTO [tbc]
SELECT '晚餐','17:00:00','23:00:00','12' union all
SELECT '午餐','11:00:00','16:00:00','8' union all
SELECT '早餐','06:00:00','08:00:00','6'
GO
IF OBJECT_ID('[tbd]') IS NOT NULL
DROP TABLE [tbd]
GO
CREATE TABLE [tbd] (EmployeeID varchar (20),CheckDate datetime,CheckTime varchar (8),
Morning int,AfterNoon int,Evening int,Other int,Price int,MachineID int,AllTime datetime )
INSERT INTO [tbd]
SELECT 'HR1001',' 2010-06-06', '21:21:00', 0, 0 ,1 ,0 ,12, 2, '2010-06-06 21:21:00' union all
SELECT 'HR1001',' 2010-06-06 ', '07:22:00', 1, 0 ,0, 0, 6 ,2 , '2010-06-06 21:22:00' union all
SELECT 'SA8005',' 2010-06-06 ', '14:22:00', 0 ,1 ,0 ,0, 8 ,2 , '2010-06-06 21:22:00' union all
SELECT 'SA8005',' 2010-06-06 ', '7:25:00', 1 ,0 ,0 ,0 ,6 ,2 , '2010-06-06 21:22:00'
GOselect t1.departid 部门代码,
t1.departname 部门名称,
sum(isnull(d.Morning,0)) 早餐次数,
sum(isnull(case when d.Morning=1 then Price end,0)) 早餐金额,
sum(isnull(d.AfterNoon,0)) 午餐次数,
sum(isnull(case when d.AfterNoon=1 then Price end,0)) 午餐金额,
sum(isnull(d.Evening,0)) 晚餐次数,
sum(isnull(case when d.Evening=1 then Price end,0)) 晚餐次数,
sum(isnull(d.Other,0)) 其他餐次数,
sum(isnull(case when d.Other=1 then Price end,0)) 其他餐金额,
sum(isnull(Price ,0)) 合计金额
from tba t1 left join tba t2 on t2.departid like t1.departid+'%'
left join tbb b on b. DepartID=t2.DepartID
left join tbd d on d.EmployeeID=b.Code
where len(t1.departid)<4
group by t1.departid,t1.departname
order by t1.departid
/*
部门代码 部门名称 早餐次数 早餐金额 午餐次数 午餐金额 晚餐次数 晚餐次数 其他餐次数 其他餐金额 合计金额
---------------------------------------------------------------------------------------------------- ------------------------------ ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
A **公司 2 12 1 8 1 12 0 0 32
A01 总务部 1 6 0 0 1 12 0 0 18
A02 制造部 0 0 0 0 0 0 0 0 0
A03 财务部 1 6 1 8 0 0 0 0 14
A04 销售部 0 0 0 0 0 0 0 0 0(所影响的行数为 5 行)*//*
求一SQL语句,要求实现的结果是:部门代码 部门名称 早餐次数 早餐金额 午餐次数 午餐金额 晚餐次数 晚餐金额 其他餐次数 其他餐金额 合计金额
A **公司 2 12 1 8 1 12 0 0 32
A01 总务部 1 6 0 0 1 12 0 0 18
A02 制造部 1 6 1 8 0 0 0 0 14
A03 财务部 0 0 0 0 0 0 0 0 0
.....也就是对各部门和各时段的餐次进行汇总,下级部门要汇总到上级部门中,比如部门代码A0101的数据要汇总到部门代码A01中,而A01中的数据要汇总到A中
*/