我有张a表 数据假如:
data_id area_id changp1 changp2 changp3
200809 001 320 222 333
200809 002 328 211 111
200910 001 430 102 321
200910 002 453 890 432
我现在需要貌似把他显示成:200910的数据
changp data_id area_id
430 001 200910
453 002 200910
102 001 200910
890 002 200910
321 001 200910
432 002 200910 不用union all 请各位达人帮我下 如果还有表达不明的请指出马上更正
小弟大恩不言谢 只有小小分子送上。
解决方案 »
- 触发器的问题。
- 请教Oracle10g 容灾备份相关
- 请问各位关于闪回方面的问题
- Oracle10g插入速度比9i慢很多,为什么啊
- pl/sql调优的具体步骤???
- 开发库的表字段顺序和现场库的表字段不一致会有什么影响???
- job的问题〔oracle〕
- 请教如何用语句终止ORACLE里两类“一个用户的连接”?
- Win2000怎么装不上Oracle9i??不怎么是怎么回事??在线等????
- 在线等,急。。。。。存储过程中的循环语法
- 怎样解决数据库连接超时问题?
- ORA-00600: internal error code, arguments: [KGHALP1], [0x0], [], [], [], [], [], []
oracle 10g wmsys.wm_concat行列转换函数的使用 Oracle Database 10g Enterprise Edi
With the Partitioning, OLAP and DaSQL> select *from test;ID NAME CONTENT
---------- ---------- ----------
1 n1 c1
2 n2 c1
2 n2 c2
3 n3 c1
3 n3 c2
3 n3 c3
4 n4 c1
4 n4 c2
4 n4 c3已选择9行。SQL> col WMSYS.WM_CONCAT(CONTENT) for a30
SQL> select id,name,wmsys.wm_concat(content) from test group by id,name;ID NAME WMSYS.WM_CONCAT(CONTENT)
---------- ---------- ------------------------------
1 n1 c1
2 n2 c1,c2
3 n3 c1,c2,c3
4 n4 c1,c3,c2
1 c1 v11 c2 v21 c3 v31
2 c1 v12 c2 v22 c3
3 c1 v13 c2 c3 v33
4 c1 c2 v24 c3 v34
5 c1 v15 c2 c3
6 c1 c2 c3 v35
7 c1 c2 c3这种情况可以用分析函数实现:SELECT id,
MAX(decode(rn, 1, cn, NULL)) cn_1,
MAX(decode(rn, 1, cv, NULL)) cv_1,
MAX(decode(rn, 2, cn, NULL)) cn_2,
MAX(decode(rn, 2, cv, NULL)) cv_2,
MAX(decode(rn, 3, cn, NULL)) cn_3,
MAX(decode(rn, 3, cv, NULL)) cv_3
FROM (SELECT id,
cn,
cv,
row_number() over(PARTITION BY id ORDER BY cn, cv) rn
FROM t_row_col)
GROUP BY ID;
from (select data_id,area_id,changp1||','||changp2||','||changp3 col1 from a) t1,
(select rownum rn from dual connect by rownum<=4) t2;
from t1,
(select rownum rn from dual connect by rownum<4) t2;
但是 能不能做个标示 来区分 changp1,changp2,changp3 大概意思 是这样:changp_id为标示字段 changp data_id area_id changp_id
430 001 200910 1
453 002 200910 1
102 001 200910 2
890 002 200910 2
321 001 200910 3
432 002 200910 3