关于Oracle数据库的sql语句请教大家

假如有这么一张表tablenameageschool张三10A张三14B张三18C请问我该如何写sql语句得出name101418张三ABC万分感激!!!大神们帮帮我啊,... 假如有这么一张表table
name age school
张三 10 A
张三 14 B
张三 18 C
请问我该如何写sql语句得出
name 10 14 18
张三 A B C
万分感激!!!
大神们帮帮我啊,急求!!!!
展开
 我来答
后盐无齿
2014-02-24 · TA获得超过603个赞
知道小有建树答主
回答量:378
采纳率:50%
帮助的人:146万
展开全部
SQL> select * from test;

NAME AGE SCHOOL
---------- ---------- ----------
张三 10 A
张三 14 B
张三 18 C
王二 11 A
王二 15 B
王二 19 C

6 rows selected.

SQL> select name,
2 sum(decode(school,'A',age,null)) A,
3 sum(decode(school,'B',age,null)) B,
4 sum(decode(school,'C',age,null)) C
5 from test
6 group by name;

NAME A B C
---------- ---------- ---------- ----------
王二 11 15 19
张三 10 14 18

供参考,个人觉得以年龄分组没有以学校分组合理, 呵呵
更多追问追答
追问
你的方法我用了结果是这样的:
NAME 10 14 18
张三 A
张三 B
张三 C
我要的是能在一条数据理显示出来,谢谢
追答
要写程序实现了

对字符串的"求和"只能通过连接实现, oracle11g有sys_connect_by_path的用法, 有兴趣可以研究一下
SQL> select name,replace(wm_concat(sa),',',' ') "school:age"
2 from (select name,school||':'||age sa from test)
3 group by name;

NAME school:age
---------- ----------------------------------------
王二 AA:10 CC:18 BB:14
张三 A:10 C:18 B:14

下面那位的方法也可以试一下,不过对age的值有限制:
SQL> select name,max("10"),max("14"),max("18")
2 from (
3 select name,
4 decode(age,'10',school) as "10",
5 decode(age,'14',school) as "14",
6 decode(age,'18',school) as "18"
7 from test )
8 group by name;

NAME MAX("10") MAX("14") MAX("18")
---------- ---------- ---------- ----------
王二 AA BB CC
张三 A B C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wucui2007ah
2014-02-24 · TA获得超过120个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:126万
展开全部
with pivot_data as
(select name,age,WM_CONCAT(school) remark from table
group by name,age)
select * from pivot_data
pivot(max(school) for age in(10,14,18))

--oracle 11g
更多追问追答
追问
你的方法貌似行不通,我运行老是有错误、、
追答

你要看下你的什么版本,我在上面说了我的是11g,pivot是11g新增的一个函数

我的测试显示如下:

--原数据

--结果

with pivot_data as
(select cust_id,cust_name,WM_CONCAT(remark) remark from customers group by cust_id,cust_name)
select * from pivot_data
pivot(max(remark) for cust_name in(1,2,3,4,5,6))

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fudacaitao
2014-02-24 · TA获得超过198个赞
知道答主
回答量:117
采纳率:0%
帮助的人:57.2万
展开全部
描述错了吧,结果中第一列名是name,第二列名是10?
追问
没错,所以我才会问大家的。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-05-10
展开全部
然后呢····
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式