Oracle
现在我有一个表有几个字段.
表结构如下
prjid procid content1 content2 content3 relateflag createdate userid
2009A001 300 233 a 审计总金额 1 2009-5-25 18:06:03 admin
2009A001 300 234 b 违法金额 2 2009-5-25 18:06:03 admin
2009A001 300 235 c 违规金额 3 2009-5-25 18:06:03 admin
2009A001 300 236 d 增收节支 4 2009-5-25 18:06:03 admin2009A002 300 233 a 审计总金额 1 2009-5-25 18:06:03 admin
2009A002 300 234 b 违法金额 2 2009-5-25 18:06:03 admin
2009A002 300 235 c 违规金额 3 2009-5-25 18:06:03 admin
2009A002 300 236 d 增收节支 4 2009-5-25 18:06:03 admin2009A003 300 233 a 审计总金额 1 2009-5-25 18:06:03 admin
2009A003 300 234 b 违法金额 2 2009-5-25 18:06:03 admin
2009A003 300 235 c 违规金额 3 2009-5-25 18:06:03 admin
2009A003 300 236 d 增收节支 4 2009-5-25 18:06:03 admin我想把这12条数据合并成一条数据怎么办? procid 是不变的固定为300 合并之后的数据如下
prjid procid content1 content2 content3 content4 createdate userid
2009A001 300 233 234 235 236 2009-5-25 18:06:03 admin
2009A002 300 233 234 235 236 2009-5-25 18:06:03 admin
2009A003 300 233 234 235 236 2009-5-25 18:06:03 admin请求各位大虾帮帮忙解决!小弟感激不尽!!!小弟初到CSDN.分数貌似不多!!还望各位大虾不要介意!
本人在线等.!!谢谢!!!!
现在我有一个表有几个字段.
表结构如下
prjid procid content1 content2 content3 relateflag createdate userid
2009A001 300 233 a 审计总金额 1 2009-5-25 18:06:03 admin
2009A001 300 234 b 违法金额 2 2009-5-25 18:06:03 admin
2009A001 300 235 c 违规金额 3 2009-5-25 18:06:03 admin
2009A001 300 236 d 增收节支 4 2009-5-25 18:06:03 admin2009A002 300 233 a 审计总金额 1 2009-5-25 18:06:03 admin
2009A002 300 234 b 违法金额 2 2009-5-25 18:06:03 admin
2009A002 300 235 c 违规金额 3 2009-5-25 18:06:03 admin
2009A002 300 236 d 增收节支 4 2009-5-25 18:06:03 admin2009A003 300 233 a 审计总金额 1 2009-5-25 18:06:03 admin
2009A003 300 234 b 违法金额 2 2009-5-25 18:06:03 admin
2009A003 300 235 c 违规金额 3 2009-5-25 18:06:03 admin
2009A003 300 236 d 增收节支 4 2009-5-25 18:06:03 admin我想把这12条数据合并成一条数据怎么办? procid 是不变的固定为300 合并之后的数据如下
prjid procid content1 content2 content3 content4 createdate userid
2009A001 300 233 234 235 236 2009-5-25 18:06:03 admin
2009A002 300 233 234 235 236 2009-5-25 18:06:03 admin
2009A003 300 233 234 235 236 2009-5-25 18:06:03 admin请求各位大虾帮帮忙解决!小弟感激不尽!!!小弟初到CSDN.分数貌似不多!!还望各位大虾不要介意!
本人在线等.!!谢谢!!!!
照你的数据
select distinct prjid,procid,233 content1,234 content2,235 content3,236 content4,createdate,userid
from 表
create table T_TEST
(
PRJID VARCHAR2(20),
PROCID NUMBER(20),
CONTENT1 NUMBER(20),
CONTENT2 VARCHAR2(1)
)
表中数据
prjid procid content1 content2
2009A001 300 233 a
2009A001 300 234 b
2009A001 300 235 c
2009A001 300 236 d
2009A002 300 233 a
2009A002 300 234 b
2009A002 300 235 c
2009A002 300 236 d
2009A003 300 233 a
2009A003 300 234 b
2009A003 300 235 c
2009A003 300 236 dselect t.prjid,max(t.procid) procid,
(select content1 from t_test where content2 = 'a' and prjid=t.prjid) content1,
(select content1 from t_test where content2 = 'b' and prjid=t.prjid) content2,
(select content1 from t_test where content2 = 'c' and prjid=t.prjid) content3,
(select content1 from t_test where content2 = 'd' and prjid=t.prjid) content4
from t_test t group by t.prjid执行结果:
prjid procid content1 content2 content3 content4
2009A001 300 233 234 235 236
2009A002 300 233 234 235 236
2009A003 300 233 234 235 236
这个确实是可以的.但是如果. content2的值不是a,b,c,d来的.比如是 c,d,v,a,a,c,s,f,w,d,e,f等等这些.
好像也不可以了噢.
那你总要有个规律吧,什么时候content1的值作为content1,什么时候作为content2,什么时候作为content3,什么时候作为content4。
根据条件将我的SQL改改就成了
lihui_shine 不知道还有更好的办法没有!?
还是说有几条ROW就有几个CONTENTN的字段,如果是这样的情况,是行转列的问题,最好用存储过程处理,如果是第一条情况,你要说明规则
合并后就是连着 content1 content2 content3
content1对应的值为2009A001 第一行的值.
content2对应的值为2009A001 第二行的值.
content3对应的值为2009A001 第三行的值.
content4对应的值为2009A001 第四行的值.但是现在的数据就根本是没有规则而言的.!
存储过程我不怎么会写.
呵呵.期待还有没有更好的!