code item
101 a
101 b
101 c
101 d
102 a
102 c
102 d
103 a
103 d
104 c
统计后到得到
101 a、b、c、d
102 a、c、d
103 a、d
104 c我用的是DB2
101 a
101 b
101 c
101 d
102 a
102 c
102 d
103 a
103 d
104 c
统计后到得到
101 a、b、c、d
102 a、c、d
103 a、d
104 c我用的是DB2
解决方案 »
- 如果我一台电脑 装eclipse和 myeclipse 会有冲突吗
- struts2 购物车问题
- jsp+sql2005做个网上书城。要实现 图书详细信息显示,图书类别显示,添加类别,图书库存修改四个功能。已实现前面四个功能,库存修改不会,求高手、求解!!!
- apache2.2.4+tomcat6集群后如何不用在url后写index.jsp直接访问主页?
- tomcat5.5中配置jndi的问题
- 关于struts2上传问题
- utf-8 是三个byte的长度吗?
- 求个大神来看下
- 想问2个关于spring的aop的问题
- spring dao异常应当如何处理
- 请教一个关于ibatis的一个简单问题。谢谢!!!!!!!!!!!!
- 请教高手,为何我的服务器tomcat6.0老出现网页Bad Gateway!现像.
code item
101 a、b、c、d
102 a、c、d
103 a、d
104 c
假设有这么一个表:
A B
1 a
2 b
1 c
1 d
3 e
3 f
查询的结果为:
1 a,c,d
2 b
3 e,f
那么DB2的写法是这样的:
WITH T1(A,B,NUM) AS
(
Select A,B,ROW_NUMBER() OVER(PARTITION BY A orDER BY ID) FROM T
),
T2(RA,RB,NUM) AS
(
Select A,CHAR(B,10),NUM FROM T1 Where NUM = 1
UNION ALL
Select T2.RA,RTRIM(T2.RB)||','||T1.B,T1.NUM FROM T1 , T2 Where T1.NUM = T2.NUM + 1 AND T1.A = T2.RA
)
Select
RA,RB FROM T2
Where
NUM = ( Select MAX(NUM) FROM T2 TEMP Where TEMP.RA = T2.RA)
orDER BY RA
大概的结构是这样的:
with
表达式(包括递归的起点)
union all
表达式(递归的步骤)
在那个基础上改了一点with t1 as
(
select id,name,row_number() over(partition by id order by id )as num from test.tbr
),
t2(id,name,num)as
(
select id,name,num from t1 where num=1
union all
select t2.id,rtrim(t2.name)||','||t1.name,t1.num from t1,t2 where t1.num=t2.num+1 and t1.id=t2.id
)
select id,name from t2 where num=(select max(num) from t2 as tmp where tmp.id=t2.id) order by id;那个递归有点难懂
递归连接
每次连接1行 然后rownumber+1
最后取出最大行号的行
行列转换本来就比较复杂。你不要用sql,就自己用程序写。没有更简单的方法了。