sql 語句請教

koenma80 2013-04-02 10:58:34
大家好,想請問
我用以下查詢語句
SELECT cod_a, cod_b
FROM codd
order by cod_a
得到
cod_a cod_b
A sd412
A g10012
B cd5254
B sd412
B cf3932
B qw6886
B 68842
C g10012
C r668
C as8888

想請問有什麼方式可得到以下結果
A sd412 q10012
B cd5254 sd412 cf3932 qw6886 68842
C q10012 r668 as8888
...全文
473 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
koenma80 2013-04-08
  • 打赏
  • 举报
回复
感謝各位的回覆,令我受益良多 thanks.
koenma80 2013-04-08
  • 打赏
  • 举报
回复
大家好,剛剛又找到了新的方法,供大家參考
SELECT cod_a, SUBSTR (MAX (SYS_CONNECT_BY_PATH (cod_b, ';')), 2) NAME
    FROM (SELECT cod_a, cod_b, rn, LEAD (rn) OVER (PARTITION BY cod_a ORDER BY rn) rn1
            FROM (SELECT cod_a, cod_b, ROW_NUMBER () OVER (ORDER BY cod_b) rn
                    FROM codd))
START WITH rn1 IS NULL
CONNECT BY rn1 = PRIOR rn
GROUP BY cod_a;
小海葵1 2013-04-03
  • 打赏
  • 举报
回复
没ORACLE环境,只能帮你顶一下。
善若止水 2013-04-03
  • 打赏
  • 举报
回复
引用 4 楼 tangguoqun 的回复:
10g以上版本SQL code?1select cod_a,wmsys.wm_concat(cod_b) from codd group by cod_a;
确实这样做的,但此时的数据之间的分隔符为逗号,需要在查询结果的基本上把逗号替换为空值
  • 打赏
  • 举报
回复
是查询出来 是2个字段么 是的话wm_concat()可以完成 不是的话 那必须用动态sql了
tangguoqun 2013-04-03
  • 打赏
  • 举报
回复
10g以上版本
select cod_a,wmsys.wm_concat(cod_b) from codd group by cod_a;
kongxv0001 2013-04-03
  • 打赏
  • 举报
回复
单纯查询语句的话,实在是想不出来。可以用过程里面套游标拼接,或者转存等很多方法
Yhzhtk 2013-04-03
  • 打赏
  • 举报
回复
sql是(structured query language)结构化查询语言。 你这个结果数量不定,没有结构化,应该不能直接通过Sql查询得到。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧