有表结构和数据如下,ID表示工号,TYPE表示名字类型,NAME则记录名字
TYPE为0,表示NAME中的名字为中文,1则为英文
行号 id type name
1 1 0 王海
2 1 1 jon
3 2 0 小李
4 3 1 happy先希望通过最简单的SQL语句来查询得到结果如下
行号 ID CNAME ENAME
1 1 王海 jon
2 2 小李
3 3 happy一下是我自己写的SQL,但是总觉得效率有问题,请大家帮忙出出主意select distinct t.id,t1.cname,t2.ename from test_table t,
(select id,name as cname from test_table where type = 0) t1,
(select id,name as ename from test_table where type = 1) t2
where t.id = t1.id(+) and t.id = t2.id(+)
order by t.id
TYPE为0,表示NAME中的名字为中文,1则为英文
行号 id type name
1 1 0 王海
2 1 1 jon
3 2 0 小李
4 3 1 happy先希望通过最简单的SQL语句来查询得到结果如下
行号 ID CNAME ENAME
1 1 王海 jon
2 2 小李
3 3 happy一下是我自己写的SQL,但是总觉得效率有问题,请大家帮忙出出主意select distinct t.id,t1.cname,t2.ename from test_table t,
(select id,name as cname from test_table where type = 0) t1,
(select id,name as ename from test_table where type = 1) t2
where t.id = t1.id(+) and t.id = t2.id(+)
order by t.id
解决方案 »
- MDF文件如何导入到oracle数据库?
- 未能加载文件或程序集“Oracle.DataAccess, Version=2.112.1.0,.....,怎么解决这个问题呢
- oracle执行多条语句临时变量问题
- oracle 大数据计算
- 如何用ORACLE客户端修改服务器的系统时间?
- 优化表,数据库时,为了加快对常用的大表的操作,在副表和备份表之间转存是遇到的事务的回滚难题。。。
- oracle触发器能生成job,完成任务之后停止和删除job吗?
- 添加记录中的某个字段时并发与重复问题
- 求PowerDesigner教程
- 请问oracle 中定位字符串位置的方法是什么呀, 如pos等 谢谢
- 帮忙写句游标
- 这个sql块写的有问题,大家帮忙看看
id,
max(decode(type,0,name,'')) cname,
max(decode(type,1,name,'')) ename
from tb
group by id
INSERT INTO AA VALUES(2, 1, 1, 'jon');
INSERT INTO AA VALUES(3, 2, 0, '小李');
INSERT INTO AA VALUES(4, 3, 1, 'happy');SELECT ROWNUM, ID, DECODE(TYPE, 0, NAME) AS NAME,
DECODE(SEC_NAME, NULL, DECODE(TYPE, 1, NAME, SEC_NAME),
SEC_NAME) AS CNAME
FROM (
SELECT ID, TYPE, NAME,
LEAD(NAME, 1, NULL) OVER (PARTITION BY ID ORDER BY TYPE) AS SEC_NAME,
ROW_NUMBER() OVER (PARTITION BY ID ORDER BY TYPE) AS SEQ
FROM AA
)
WHERE SEQ = 1
基于当前表,你试试下面的SQL:
SELECT distinct t.id, t.name as cname, t1.name as ename
FROM test_table t LEFT JOIN test_table t1 on t.id=t1.id and t1.type=1
WHERE t.type = 0
ORDER BY t.id
id,
decode(type,0,name,'') cname,
decode(type,1,name,'') ename
from tb
不group by 好像不行吧