34,576
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE t_psn
(
sales_no VARCHAR(10),
sales_leader VARCHAR(10),
sales_level VARCHAR(2)
)
CREATE TABLE t_sales
(s_id INT IDENTITY(1,1),
sales_no VARCHAR(10),
s_article VARCHAR(20),
s_money DECIMAL (12,2)
)
insert t_psn (sales_no,sales_leader,sales_level) values ( '1001','','20')
insert t_psn (sales_no,sales_leader,sales_level) values ( '1002','','20')
insert t_psn (sales_no,sales_leader,sales_level) values ( '1003','1001','10')
insert t_psn (sales_no,sales_leader,sales_level) values ( '1004','1001','10')
insert t_psn (sales_no,sales_leader,sales_level) values ( '1005','1003','9')
insert t_psn (sales_no,sales_leader,sales_level) values ( '1006','1002','9')
insert t_sales (sales_no,s_article,s_money) values ( '1001','AAA',50.00)
insert t_sales (sales_no,s_article,s_money) values ( '1001','BAA',60.00)
insert t_sales (sales_no,s_article,s_money) values ( '1002','BAA',10.00)
insert t_sales (sales_no,s_article,s_money) values ( '1003','BBA',100.00)
insert t_sales (sales_no,s_article,s_money) values ( '1004','BBA',100.00)
insert t_sales (sales_no,s_article,s_money) values ( '1005','BBB',90.00)
insert t_sales (sales_no,s_article,s_money) values ( '1006','BBB',90.00)
with cte as
(
select no=sales_no,sales_no,sales_leader from t_psn where sales_level >= 10
union all
select a.no,b.sales_no,b.sales_leader from cte a join t_psn b on a.sales_no = b.sales_leader
)
select 工号=a.no,总件数=count(1),销售金额=sum(s_money)
from cte a
join t_sales b on a.sales_no = b.sales_no
group by a.no
/*
工号 总件数 销售金额
---------- ----------- ---------------------------------------
1001 5 400.00
1002 2 100.00
1003 2 190.00
1004 1 100.00
(4 行受影响)
*/
create table #EnterPrise
(
Department nvarchar(50),--部门名称
ParentDept nvarchar(50),--上级部门
DepartManage nvarchar(30)--部门经理
)
insert into #EnterPrise select '技术部','总经办','Tom'
insert into #EnterPrise select '商务部','总经办','Jeffry'
insert into #EnterPrise select '商务一部','商务部','ViVi'
insert into #EnterPrise select '商务二部','商务部','Peter'
insert into #EnterPrise select '程序组','技术部','GiGi'
insert into #EnterPrise select '设计组','技术部','yoyo'
insert into #EnterPrise select '专项组','程序组','Yue'
insert into #EnterPrise select '总经办','','Boss'
--查询部门经理是Tom的下面的部门名称
;with hgo as
(
select *,0 as rank from #EnterPrise where DepartManage='Tom'
union all
select h.*,h1.rank+1 from #EnterPrise h join hgo h1 on h.ParentDept=h1.Department
)
select * from hgo
/*
Department ParentDept DepartManage rank
--------------- -------------------- ----------------------- -----------
技术部 总经办 Tom 0
程序组 技术部 GiGi 1
设计组 技术部 yoyo 1
专项组 程序组 Yue 2
*/
--查询部门经理是GiGi的上级部门名称
;with hgo as
(
select *,0 as rank from #EnterPrise where DepartManage='GiGi'
union all
select h.*,h1.rank+1 from #EnterPrise h join hgo h1 on h.Department=h1.ParentDept
)
select * from hgo
/*
Department ParentDept DepartManage rank
-------------------- ---------------------- ----------- -----------
程序组 技术部 GiGi 0
技术部 总经办 Tom 1
总经办 Boss 2
*/
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2010/01/31/5274571.aspx