论坛首页 招聘求职论坛

前天笔试碰到的一个题,是列转行的,大家帮看看

浏览 13604 次
精华帖 (0) :: 良好帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-04-08  
select
id,
max(case
   when user_data='QQ' then value
end)  QQ,
[other same]....
from userdetail
group by id
0 请登录后投票
   发表时间:2011-04-09  
考的是sql语句的行列转换
0 请登录后投票
   发表时间:2011-04-11  
用decode啊,easy
0 请登录后投票
   发表时间:2011-04-12  
decode可以
0 请登录后投票
   发表时间:2011-04-12  
select u1.name,
       --d.user_data,
       --d.value
          max( decode(d.user_data, '地址', d.value, '')) 地址,
          max( decode(d.user_data, '电话', d.value, '')) 电话,
          max( decode(d.user_data, '证件号', d.value, '')) 证件号,
          max( decode(d.user_data, '邮编', d.value, '')) 邮编,
          max( decode(d.user_data, 'QQ', d.value, '')) QQ
  from userinfo u1, userdetail d
where u1.id = d.user_id
group by u1.name
;
0 请登录后投票
   发表时间:2011-04-13  
decode 解决一切行转列,可惜只有oracle能使
0 请登录后投票
   发表时间:2011-04-14  
谢谢大家,受益匪浅
0 请登录后投票
   发表时间:2011-04-14  
好像Oracle、MySQL 用case可以,SQLServer没试过
0 请登录后投票
   发表时间:2011-04-14   最后修改:2011-04-14
咦……哈哈
0 请登录后投票
   发表时间:2011-04-14  
Case函数能解决。
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics