一个数据库查询语句问题,请教高人。。。

no9988 2011-02-23 10:28:20
在论坛上看到这么一个问题。。
5,表B
C1 c2
2005-01-01 1
2005-01-01 3
2005-01-02 5

要求的处数据
2005-01-01 4
2005-01-02 5
合计 9
试用一个Sql语句完成。

这个可以用 group by sum 实现


那我想稍微改下,具体如下:

5,表B
C1 c2
2005-01-01 1
2005-01-01 3
2005-01-02 5

要求的处数据
2005-01-01 1-3
2005-01-02 5

我的表B数据不止这些,而且数据量也可能会上万。

有可能是
C1 c2
2005-01-01 1
2005-01-01 3
2005-01-01 4
2005-01-02 5
2005-01-02 6

那么我要的结果是

2005-01-01 1-3-4
2005-01-02 5-6

请问一下。这种情况有没有可能一个SQL语句就能够完成?


解决了觉得分数少了可以在加!我论坛分挺多的。呵呵。
...全文
91 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
no9988 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhuomingwang 的回复:]
SQL code

with tb as(
select '2005-01-01' C1,1 c2 from dual union all
select '2005-01-01', 3 from dual union all
select '2005-01-01', 4 from dual union all
select '2005-01-02', 5 from dual ……
[/Quote]

运用的太灵活了,我当时想到了那个连接函数。但是我没想到用REPLACE 这样处理。因为我要的结果还要做不少处理的。。

准备结贴了。。谢谢各位。


gelyon 2011-02-23
  • 打赏
  • 举报
回复
学习哈10g的函数wm_concat()此问题就简单多了,当然方法很多的,sys_connect_by_path()或者自定义一个函数,都行
QKForex 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhuomingwang 的回复:]
SQL code

with tb as(
select '2005-01-01' C1,1 c2 from dual union all
select '2005-01-01', 3 from dual union all
select '2005-01-01', 4 from dual union all
select '2005-01-02', 5 from dual ……
[/Quote]
挺好的。学习了
  • 打赏
  • 举报
回复

with tb as(
select '2005-01-01' C1,1 c2 from dual union all
select '2005-01-01', 3 from dual union all
select '2005-01-01', 4 from dual union all
select '2005-01-02', 5 from dual union all
select '2005-01-02', 6 from dual)
--以上为提供数据的语句
select c1,replace(wm_concat(c2),',','-') col2
from tb
group by c1


C1 COL2
---------- --------------------
2005-01-01 1-3-4
2005-01-02 5-6

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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