原始数据:
语文 数学 英语
张三 85 90 95
李四 90 85 86
转换成:
张三 李四
语文 85 90
数学 90 85
英语 95 86
请问各位能用sql写出来吗?(不要写存储过程)
原始数据:
语文 数学 英语
张三 85 90 95
李四 90 85 86
转换成:
张三 李四
语文 85 90
数学 90 85
英语 95 86
请问各位能用sql写出来吗?(不要写存储过程)
测试例字:
create table a(name varchar2(12),
math number,
englist number,chinese number);
插入两行记录:
张三 85 90 95
李四 90 85 86
转行查询语句:
SELECT flag, MAX(李四) AS 李四, MAX(张三) AS 张三
FROM (SELECT decode(NAME, '李四', fensu) as 李四,
decode(NAME, '张三', fensu) AS 张三,
flag
FROM (SELECT a.NAME, a.math AS fensu, 'math' AS flag
FROM a
UNION ALL
SELECT a.NAME, a.englist AS fensu, 'englist' AS flag
FROM a
UNION ALL
SELECT a.NAME, a.chinese AS fensu, 'chinese' AS flag FROM a) b
ORDER BY NAME, flag, fensu)
GROUP BY flag
我在ORACLE是测试是没问题