原始表定义及数据:
用户ID 家属名称 显示顺序
========================
user1 父亲 1
user1 母亲 2
user1 叔叔 3
user2 父亲 3
user2 母亲 2
user2 叔叔 1
user3 叔叔 3 =》注意,可以跳着发顺序啊,真是shit
========================希望能用一个sql转变为:
========================
用户ID 家属名称1 家属名称2
user1 父亲 母亲
user2 叔叔 母亲
user3 叔叔
========================
不需要显示家属名称3.
不能使用Procedul,只用一个sql。呵呵
用户ID 家属名称 显示顺序
========================
user1 父亲 1
user1 母亲 2
user1 叔叔 3
user2 父亲 3
user2 母亲 2
user2 叔叔 1
user3 叔叔 3 =》注意,可以跳着发顺序啊,真是shit
========================希望能用一个sql转变为:
========================
用户ID 家属名称1 家属名称2
user1 父亲 母亲
user2 叔叔 母亲
user3 叔叔
========================
不需要显示家属名称3.
不能使用Procedul,只用一个sql。呵呵
解决方案 »
- Oracle数据库打开看不到表
- 查询oracle所有用户的sql语句?
- to_char(j,'fm9')的疑问
- 【请教】前辈们,关于引用游标的一个小问题
- oracle官网asm只有x64架构的,怎么回事啊?
- 怎样把一个字段设置成自动编号的类型
- 参数含有数组的procedure?
- OracleCallableStatement执行问题
- 如何获取Blob/long raw字段的真实长度?
- 请问在ORACLE里的游标怎么用?我想实现翻页功能!谢谢
- 不解的问题????????????????????
- XP SP2安装oracle8 professional版,出现stopsrvc.vrf(78):Type mismatch 错误,急
用户ID,
MAX(DECODE(显示顺序, 1,家属名称, '')) 家属名称1,
MAX(DECODE(显示顺序, 2,家属名称, '')) 家属名称2
FROM 表
GROUP BY 用户ID
MAX(DECODE(显示顺序,'2',家属名称,'')) AS 家属名称2
FROM TBNAME GROUP BY 用户ID;
select 用户ID, 家属名称, row_number() over (partition by 用户ID order by 显示顺序) as "显示顺序" from 表就能得到标准的“显示顺序”