求一语句:横向显示数据

长江 2009-03-30 03:25:54
Oracle 中某表有两字段UserName,Lev

SELECT 'Loroe' UserName, '团长' Lev FROM DUAL
UNION ALL
SELECT 'Dance' UserName, '连长' Lev FROM DUAL
UNION ALL
SELECT 'Nanlar' UserName, '排长' Lev FROM DUAL


如何查询出 以Lev值为字段的 单条记录,如下结果:

-----------------------
团长 连长 排长
Loroe Dance Nanlar
------------------------

查出来的结果: 团长 连长 排长 是 字段,Loroe Dance Nanlar为值。

麻烦高手们路过帮帮忙
非常非常感谢!



...全文
133 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
merrill 2009-03-31
  • 打赏
  • 举报
回复
case when 和 decode是一样的效果
但是 对于不定行转列 就不行啦
dawugui 2009-03-31
  • 打赏
  • 举报
回复
select 
(SELECT 'Loroe' FROM DUAL ) 团长,
(SELECT 'Dance' FROM DUAL ) 连长,
(SELECT 'Nanlar' from DUAL ) 排长
limaowa 2009-03-31
  • 打赏
  • 举报
回复
行列转换表达式,用于在极大表中减少记录,用列的增加来换取行的减少,以提高表查询的效率

case when

or

decode

如下:
SELECT max(case when LEV='a' then USERNAME else null end) a,
max(case when LEV='b' then USERNAME else null end) b,
max(case when LEV='c' then USERNAME else null end) c
FROM (SELECT 'Loroe' USERNAME, 'a' LEV
FROM DUAL
UNION ALL
SELECT 'Dance' USERNAME, 'b' LEV
FROM DUAL
UNION ALL
SELECT 'Nanlar' USERNAME, 'c' LEV FROM DUAL);
mutou110633 2009-03-31
  • 打赏
  • 举报
回复
关注ing,我也遇到了这个问题。
chensi05 2009-03-30
  • 打赏
  • 举报
回复
如果就三条不重复的数据用1楼的查应该可以
oracledbalgtu 2009-03-30
  • 打赏
  • 举报
回复
SELECT MAX(DECODE(LEV, '团长', USERNAME)) 团长,
MAX(DECODE(LEV, '连长', USERNAME)) 连长,
MAX(DECODE(LEV, '排长', USERNAME)) 排长
FROM (SELECT 'Loroe' USERNAME, '团长' LEV
FROM DUAL
UNION ALL
SELECT 'Dance' USERNAME, '连长' LEV
FROM DUAL
UNION ALL
SELECT 'Nanlar' USERNAME, '排长' LEV FROM DUAL);


[Quote=引用楼主 lonestar555 的帖子:]
Oracle 中某表有两字段UserName,Lev

SELECT 'Loroe' UserName, '团长' Lev FROM DUAL
UNION ALL
SELECT 'Dance' UserName, '连长' Lev FROM DUAL
UNION ALL
SELECT 'Nanlar' UserName, '排长' Lev FROM DUAL


如何查询出 以Lev值为字段的 单条记录,如下结果:

-----------------------
团长 连长 排长
Loroe Dance Nanlar
------------------------

查出来的结果: 团长 连长 排长 是…
[/Quote]

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧