大类小类分组统计?

baisun 2006-09-01 06:02:19
表A
ID thename FID
1 aa 0
2 bb 1
3 bb 1
4 cc 1
5 dd 0
6 ee 1
7 ff 5
... ...
如何统计出:

aa bb 2
aa cc 1
aa ee 1
dd ff 1
... ...
...全文
316 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
baisun 2006-09-04
  • 打赏
  • 举报
回复
两极,呵呵;
如何统计出:
bb 2
cc 1
ee 1
aa 4
ff 1
dd 1
......即大类跟在其小类的下边
zjcxc 元老 2006-09-01
  • 打赏
  • 举报
回复
无限级的话, 要用循环了.
另外, 楼主还应该说明是否统计中间级.

比如, 下面这个统计出什么结果
ID thename FID
----------- ---------- -----------
1 aa 0
2 bb 1
3 bb 1
4 cc 1
5 dd 0
6 ee 4
7 ff 5
free_pop2k 2006-09-01
  • 打赏
  • 举报
回复
有点像一个BOM表。不知道有多少级
xyxfly 2006-09-01
  • 打赏
  • 举报
回复
所影响的行数为 7 行)

ID thename FID
----------- ---------- -----------
1 aa 0
2 bb 1
3 bb 1
4 cc 1
5 dd 0
6 ee 1
7 ff 5

(所影响的行数为 7 行)

pname thename cnt
---------- ---------- -----------
aa bb 2
aa cc 1
aa ee 1
dd ff 1

(所影响的行数为 4 行)

dname thename coun
---------- ---------- -----------
aa bb 2
aa cc 1
aa ee 1
dd ff 1

(所影响的行数为 4 行)

xyxfly 2006-09-01
  • 打赏
  • 举报
回复
上面的结果:
create table a
(
ID int,
thename varchar(10),
FID int
)
insert a
select 1, 'aa', 0 union all
select 2, 'bb', 1 union all
select 3, 'bb', 1 union all
select 4, 'cc', 1 union all
select 5, 'dd', 0 union all
select 6, 'ee', 1 union all
select 7, 'ff', 5
select * from a
select a1.thename as pname,a2.thename,count(*) as cnt from a a1,a a2
where a1.fid=0 and a2.fid=a1.id
group by a1.thename,a2.thename

select max(dname) as dname,max(thename) as thename,count(*) as coun from
(select a1.thename as dname,a.thename from a, a a1 where a.fid=a1.id) b
group by dname,thename

xyxfly 2006-09-01
  • 打赏
  • 举报
回复
那a是什么?我表名是a

select a.thename as dname,abc.thename,count(*) as coun
from abc,(select * from abc) a where abc.fid=a.id group by a.thename,abc.thename
对于这个呢,a是一个表别名 a为select * from abc的结果,当然,其实没必要这样的
baisun 2006-09-01
  • 打赏
  • 举报
回复
那a是什么?我表名是a
xyxfly 2006-09-01
  • 打赏
  • 举报
回复
abc你哪里来的?
abc就是你的表名 表A,^_^
itblog 2006-09-01
  • 打赏
  • 举报
回复
ABC当然是你的表名了!
baisun 2006-09-01
  • 打赏
  • 举报
回复
abc你哪里来的?
csdnweii 2006-09-01
  • 打赏
  • 举报
回复
这个也可以
select a.thename as dname,abc.thename,count(*) as coun
from abc,(select * from abc) a where abc.fid=a.id group by a.thename,abc.thename
csdnweii 2006-09-01
  • 打赏
  • 举报
回复
select max(dname) as dname,max(thename) as thename,count(*) as coun from
(select a.thename as dname,abc.thename from abc,(select * from abc) a where abc.fid=a.id) b
group by dname,thename
tx1icenhe 2006-09-01
  • 打赏
  • 举报
回复
如果只有两级

select a1.thename as pname,a2.thename,count(*) as cnt from a a1,a a2
where a1.fid=0 and a2.fid=a1.id
group by a1.thename,a2.thename

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧