oracle 查询第n行数据库,数据库把n行查询为1行

一、创建示例表

CREATE TABLE TestTable (

name VARCHAR(10),

skill VARCHAR(10)

);

INSERT INTO TestTable VALUES (‘张三‘, ‘php‘);

INSERT INTO TestTable VALUES (‘张三‘, ‘java‘);

INSERT INTO TestTable VALUES (‘张三‘, ‘c#‘);

INSERT INTO TestTable VALUES (‘李四‘, ‘c‘);

INSERT INTO TestTable VALUES (‘李四‘, ‘c++‘);

表结构为:

name

skill

张三

php

张三

java

张三

c#

李四

c

李四

c++

希望查询的结果:

name

allSkill

张三

php,java,c#

李四

c,c++

二、SQL Server中实现

-- SQL Server

SELECT name,STUFF(

(

SELECT ‘,‘ + skill

FROM testtable a

WHERE a.name = b.name

FOR XML PATH(‘‘)

),

1, 1, ‘‘) AS allSkill

FROM testtable b

GROUP BY name

三、MySQL中实现

-- MySQL

SELECT name,GROUP_CONCAT(skill) AS allSkill

FROM testtable

GROUP BY name;

四、Oracle中实现

-- Oracle

SELECT name,WMSYS.WM_CONCAT(skill) AS allSkill

FROM testtable

GROUP BY name;

数据库把n行查询为1行

标签:varchar   skill   kill   values   ++   mysq   concat   name   数据

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:http://www.cnblogs.com/by-lhc/p/7239142.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值