如何在oracle中进行列行转换

 我来答
user0650
2016-03-06 · TA获得超过231个赞
知道答主
回答量:41
采纳率:0%
帮助的人:26.2万
展开全部

数据表示例:

假设要将name值作为行,course值作为列,转换后效果为:


对应的SQL如下:

方法1:使用表连接

SELECT DISTINCT a.name,

(SELECT score FROM grade b WHEREa.name=b.name AND b.course='语文') AS '语文',

(SELECT score FROM grade b WHEREa.name=b.name AND b.course='数学') AS '数学',

(SELECT score FROM grade b WHEREa.name=b.name AND b.course='英语') AS '英语'

FROM grade a

方法2:使用分组

SELECT name,

SUM(CASE course WHEN '语文' THEN score END) AS '语文',

SUM(CASE course WHEN '数学' THEN score END) AS '数学',

SUM(CASE course WHEN '英语' THEN score END) AS '英语'

FROM grade GROUP BY name

匿名用户
推荐于2018-03-13
展开全部
select
Name,
sum(decode(Subject,'语文',上半年成绩,0)) 语文,
sum(decode(Subject,'数学',上半年成绩,0)) 数学,
sum(decode(Subject,'英语',上半年成绩,0)) 英语,
sum(decode(Subject,'语文',下半年成绩,0)) 语文,
sum(decode(Subject,'数学',下半年成绩,0)) 数学,
sum(decode(Subject,'英语',下半年成绩,0)) 英语
from score
group by Name;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式