51CTO技术论坛 » 微软SQL Server专区 » 微软商务智能 » 一个有关分组的SQL问题        上一帖     下一帖    查看完整版本

页: [1]

国家保安2007-8-17 16:14
一个有关分组的SQL问题

表:
id num
1 10
2 20
2 30
1 50
3 5
希望得到的结果:
id num/numtotal
1 10/60
1 50/60
2 20/50
2 30/50
3 5/5
现在检索出每条记录的num在与它相同的id的所有num总得数的比,结果按id分组.

学习深造2007-8-19 08:05
参考(2005)
Select *
FROM(
Select DISTINCT
id
FROM @t
)A
OUTER APPLY(
Select [values]= STUFF(REPLACE(REPLACE(
(
Select value FROM @t N
Where id = A.id
FOR XML AUTO
), '<N value="', ','), '"/>', ''), 1, 1, '')
)N

yyccd2007-8-19 08:06
create table tb(id int,num int)

insert into tb values(1, 10)
insert into tb values(2, 20)
insert into tb values(2, 30)
insert into tb values(1, 50)
insert into tb values(3, 5)

select a.id , cast(a.num as varchar) + '/' + cast(t.num as varchar) 'num/numtotal' from tb a,
(select id,sum(num) num from tb group by id) t
where a.id = t.id
order by a.id,'num/numtotal'

drop table tb

/*
id num/numtotal
----------- -------------------------------------------------------------
1 10/60
1 50/60
2 20/50
2 30/50
3 5/5

(所影响的行数为 5 行)
*/

关键词: sql       

相关文章:
做一个SQL的数据库,要怎么做?
SQL Server 2005 盛宴系列之三十三:SSIS的部署、管理与安全
MYSQL中文参考手册
Sql 2005帐户用户的问题
SQL Server 2005 Integration Service的扩展应用

查看完整版本: 一个有关分组的SQL问题


Powered by 51CTO.COM