作者flakchen (flak)
看板Database
标题Re: [SQL ] Aggregation Function 可以处理字串吗?
时间Tue Aug 12 14:15:56 2008
如果你用SQL2005的话可以这样干:
Select 年龄,
(select 姓名 from 年龄表 Y1 where Y1.年龄=Y2.年龄 FOR XML,AUTO)
From 年龄表 Y2
Group By 年龄
第二个栏位会变成
<Y1 姓名="老大"/><Y1 姓名="老四"/>....的XML字串
如果不喜欢它用Tag当分隔的话,可以再用
Replace(Replace(Replace(栏位二,'"/><Y1 姓名="',','),
'<Y1 姓名="',''),'"/>','')
换成你要的分隔
※ 引述《teamspike (市政府7F)》之铭言:
: 话说AVG,MIN,MAX,SUM,COUNT...等aggregation function
: 用来处理基本的资料运算非常方便
: 假设今天的资料表(年龄表)如下:
: 姓名 年龄
: ____________
: 老大 20
: 老二 30
: 老三 30
: 老四 20
: 老五 40
: 欲统计各年龄层有几个人,使用COUNT可以完成
: SELECT 年龄, COUNT(年龄) AS 年龄人数
: FROM 年龄表
: GROUP BY 年龄
: 得到结果如下:
: 年龄 年龄人数
: _________________
: 20 2
: 30 2
: 40 1
: 问题来罗!
: 如果今天想得到的结果如下:
: 年龄 姓名
: _____________
: 20 老大,老四
: 30 老二,老三
: 40 老五
: 请问使用SQL指令可以做到吗?
: 日前小弟使用程式抓取资料库用回圈判断去实作这个功能
: 结果执行速度是慢到不行(也才九万多笔资料)
: 如果SQL指令可以达到那就太好了...QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.74.227.233
1F:推 teamspike:如果用access的话,是否支援这样的作法? 08/12 17:04