题目:
板(S)表:
ID name
---------------------
1 第一板数
2 第二板数箱(X)表:
ID name sname
----------------------
1 A箱 第一板数
2 B箱 第一板数
3 C箱 第二板数
4 E箱 第二板数
5 F箱 第二板数个(G)表:
ID name Xname
--------------------
1 L个 A箱
1 p个 A箱
1 m个 B箱
1 T个 A箱
1 V个 C箱
1 Q个 D箱
1 N个 F箱
//
要求结果:ID sname 箱数(count) 个数(count)
--------------------------------------------------------------------
1 第一板数 2(包含2箱) 4(A箱包含3个+B箱包含1个)
2 第二板数 3(包含3箱) 3(C箱包含1个+D箱包含1个+E箱包含0个+F箱包含1个)----
谢谢各位...
板(S)表:
ID name
---------------------
1 第一板数
2 第二板数箱(X)表:
ID name sname
----------------------
1 A箱 第一板数
2 B箱 第一板数
3 C箱 第二板数
4 E箱 第二板数
5 F箱 第二板数个(G)表:
ID name Xname
--------------------
1 L个 A箱
1 p个 A箱
1 m个 B箱
1 T个 A箱
1 V个 C箱
1 Q个 D箱
1 N个 F箱
//
要求结果:ID sname 箱数(count) 个数(count)
--------------------------------------------------------------------
1 第一板数 2(包含2箱) 4(A箱包含3个+B箱包含1个)
2 第二板数 3(包含3箱) 3(C箱包含1个+D箱包含1个+E箱包含0个+F箱包含1个)----
谢谢各位...
from s inner join x on s.name=x.name inner join g on g.xname=x.nae
group by s.id,s.name
from s inner join x on s.name=x.name inner join g on g.xname=x.name
group by s.id,s.name
select
s.ID,
s.Name,
箱数=count(distinct x.Name),
个数=count(*)
from
S
join
X on x.Sname=s.name
join
G on G.xname=x.Name
group by s.ID,s.Name
2005select
s.ID,
s.Name,
箱数=count(x.Name) over(partition by x.sname ),--2005用
个数=count(*)
from
S
join
X on x.Sname=s.name
join
G on G.xname=x.Name
group by s.ID,s.Name
insert into S values(1 , '第一板数')
insert into S values(2 , '第二板数')
create table X(ID int, name varchar(10) , sname varchar(10))
insert into X values(1 , 'A箱' , '第一板数')
insert into X values(2 , 'B箱' , '第一板数')
insert into X values(3 , 'C箱' , '第二板数')
insert into X values(4 , 'E箱' , '第二板数')
insert into X values(5 , 'F箱' , '第二板数')
create table G(ID int, name varchar(10) , xname varchar(10))
insert into G values(1 , 'L个' , 'A箱')
insert into G values(1 , 'p个' , 'A箱')
insert into G values(1 , 'm个' , 'B箱')
insert into G values(1 , 'T个' , 'A箱')
insert into G values(1 , 'V个' , 'C箱')
insert into G values(1 , 'Q个' , 'D箱')
insert into G values(1 , 'N个' , 'F箱')
goselect S.* , count(distinct X.name) [箱数(count)], count(*) [个数(count)] from S
left join X on S.name = X.sname
left join G on X.name = G.xname
group by S.id , S.name
order by S.id , S.namedrop table S , X , G/*
ID name 箱数(count) 个数(count)
----------- ---------- ----------- -----------
1 第一板数 2 4
2 第二板数 3 3(所影响的行数为 2 行)
*/
from S
left join X on S.name = X.sname
left join G on X.name = G.xname
group by S.id , S.name
order by S.id , S.name
select s.*,箱数=count(distinct x.id),个数=count(*)
from s
left join x on s.name=x.sname
left join g on x.name=g.xname
group by s.id,s.name
order by s.id
select x.sname,箱数=count(distinct x.id),个数=count(*)
from g join x on g.xname=x.name
group by x.sname
害得怎么老是多几个数据....谢谢各位!@!