表A(部门)--字段
部门ID 部门名称 上级部门
1 北京 中国
2 海淀区 北京
3 朝阳区 北京表B(人员)--字段
人员ID 人员名 部门ID
4 小一 1
5 小二 2
6 小三 3表C(薪水)--字段
薪水ID 薪水 人员ID 部门ID
1 200 4 1
2 300 5 2
3 400 6 3问题: 当我在一个文本框里输入北京的时候出来的效果为---
北京 小一 200
海淀区 小二 300
朝阳区 小三 400create table A
(部門ID int, 部門名稱 varchar(10), 上級部門 varchar(10))
insert into A
SELECT 1, '北京', '中國' UNION ALL
SELECT 2, '海淀區', '北京' UNION ALL
SELECT 3, '朝陽區', '北京' UNION ALL
SELECT 4, '江西' , '中國' union all
select 5, '南昌', '江西' union all
select 6, '進賢', '南昌'
create table B
(人員ID int, 人員名 varchar(10), 部門ID int)
insert into B
select 4, '小一', 1 union all
select 5, '小二', 2 union all
select 6, '小三', 3 union all
select 7, '張三', 4 union all
select 8, '張三', 5 union all
select 9, '張三', 6 create table C
(薪水ID int, 薪水 int, 人員ID int, 部門ID int)
insert into C
select 1, 200, 4, 1 union all
select 2, 300, 5, 2 union all
select 3, 400, 6, 3 union all
select 4, 500, 7, 4 union all
select 5, 500, 8, 5 union all
select 6, 500, 9, 6 create function dbo.aa(@str varchar(10))
returns @t table (部門ID int,部門名稱 varchar(100),上級部門 varchar(100),level int)
as
begin
declare @i int
set @i=1insert into @t
select *,@i
from A
where 部門名稱=@strwhile @@rowcount>0
begin
set @i=@i+1
insert into @t
select t.*,@i from A t LEFT JOIN @t b on t.上級部門=b.部門名稱
where b.level=@i-1
end return
endselect t1.部門名稱 ,t2.人員名,t3.薪水
from dbo.aa('江西')t1 left join B t2 on t1.部門ID=t2.部門ID
left join C t3 on t2.部門ID=t3.部門ID
and t2.人員ID=t3.人員ID
order by t1.部門名稱
compute sum(t3.薪水)
如果上级部门不能确定是多少个应该怎么写
部门ID 部门名称 上级部门
1 北京 中国
2 海淀区 北京
3 朝阳区 北京表B(人员)--字段
人员ID 人员名 部门ID
4 小一 1
5 小二 2
6 小三 3表C(薪水)--字段
薪水ID 薪水 人员ID 部门ID
1 200 4 1
2 300 5 2
3 400 6 3问题: 当我在一个文本框里输入北京的时候出来的效果为---
北京 小一 200
海淀区 小二 300
朝阳区 小三 400create table A
(部門ID int, 部門名稱 varchar(10), 上級部門 varchar(10))
insert into A
SELECT 1, '北京', '中國' UNION ALL
SELECT 2, '海淀區', '北京' UNION ALL
SELECT 3, '朝陽區', '北京' UNION ALL
SELECT 4, '江西' , '中國' union all
select 5, '南昌', '江西' union all
select 6, '進賢', '南昌'
create table B
(人員ID int, 人員名 varchar(10), 部門ID int)
insert into B
select 4, '小一', 1 union all
select 5, '小二', 2 union all
select 6, '小三', 3 union all
select 7, '張三', 4 union all
select 8, '張三', 5 union all
select 9, '張三', 6 create table C
(薪水ID int, 薪水 int, 人員ID int, 部門ID int)
insert into C
select 1, 200, 4, 1 union all
select 2, 300, 5, 2 union all
select 3, 400, 6, 3 union all
select 4, 500, 7, 4 union all
select 5, 500, 8, 5 union all
select 6, 500, 9, 6 create function dbo.aa(@str varchar(10))
returns @t table (部門ID int,部門名稱 varchar(100),上級部門 varchar(100),level int)
as
begin
declare @i int
set @i=1insert into @t
select *,@i
from A
where 部門名稱=@strwhile @@rowcount>0
begin
set @i=@i+1
insert into @t
select t.*,@i from A t LEFT JOIN @t b on t.上級部門=b.部門名稱
where b.level=@i-1
end return
endselect t1.部門名稱 ,t2.人員名,t3.薪水
from dbo.aa('江西')t1 left join B t2 on t1.部門ID=t2.部門ID
left join C t3 on t2.部門ID=t3.部門ID
and t2.人員ID=t3.人員ID
order by t1.部門名稱
compute sum(t3.薪水)
如果上级部门不能确定是多少个应该怎么写
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货