精华帖 (0) :: 良好帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-03-30
最后修改:2011-03-30
CREATE TABLE userinfo( id NUMBER, NAME VARCHAR2(20) ) CREATE TABLE userdetail( id NUMBER, user_id NUMBER, user_data VARCHAR2(20), VALUE VARCHAR2(50) ) INSERT INTO userinfo (id,NAME) VALUES(1,'张三'); INSERT INTO userinfo (id,NAME) VALUES(2,'李四'); INSERT INTO userinfo (id,NAME) VALUES(3,'王五'); COMMIT; INSERT INTO userdetail (id,USER_ID,USER_DATA,VALUE) VALUES(1,1,'地址','北京市'); INSERT INTO userdetail (id,USER_ID,USER_DATA,VALUE) VALUES(2,1,'电话','123124324324'); INSERT INTO userdetail (id,USER_ID,USER_DATA,VALUE) VALUES(3,2,'证件号','23423423423423423'); INSERT INTO userdetail (id,USER_ID,USER_DATA,VALUE) VALUES(4,3,'邮编','133012'); INSERT INTO userdetail (id,USER_ID,USER_DATA,VALUE) VALUES(5,3,'QQ','567675767'); COMMIT; SELECT a.NAME AS 姓名, NVL((SELECT b.VALUE FROM userdetail b WHERE USER_DATA='地址' AND a.ID=b.USER_ID),'空') AS 地址, NVL((SELECT c.VALUE FROM userdetail c WHERE USER_DATA='电话' AND a.ID=c.USER_ID),'空') AS 电话, NVL((SELECT d.VALUE FROM userdetail d WHERE USER_DATA='证件号' AND a.ID=d.USER_ID),'空') AS 证件号, NVL((SELECT e.VALUE FROM userdetail e WHERE USER_DATA='QQ' AND a.ID=e.USER_ID),'空') AS QQ, NVL((SELECT f.VALUE FROM userdetail f WHERE USER_DATA='邮编' AND a.ID=f.USER_ID),'空') AS 邮编 FROM (SELECT * FROM userinfo ) a 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-03-30
userinfo 表数据
userdetail 表数据 我的SQL执行结果 |
|
返回顶楼 | |
发表时间:2011-03-31
我认为是在考你会不会使用 pivot
|
|
返回顶楼 | |
发表时间:2011-04-04
面试什么职位考这种题
pivot好像是oracle11才有的函数,估计大家用11的不多吧,不知道也正常 |
|
返回顶楼 | |
发表时间:2011-04-07
用decode函数可以,或者用case语句
|
|
返回顶楼 | |
发表时间:2011-04-08
pivot SQL SERVER2005才新增的。
这题邹建写的一本SQL2000的书上有解决方案,很强大。 |
|
返回顶楼 | |
发表时间:2011-04-08
扩展了视野~ 谢谢LZ 分享。
|
|
返回顶楼 | |
发表时间:2011-04-08
oracle 的 wm_concat 表示没鸭梨
|
|
返回顶楼 | |
发表时间:2011-04-08
SELECT NAME AS 姓名,case when USER_DATA='地址' then value end 地址,case when USER_DATA='电话' then value end 电话,case when USER_DATA='证件号' then value end 证件号,case when USER_DATA='QQ' then value end QQ,case when USER_DATA='邮编' then value end 邮编
FROM userinfo |
|
返回顶楼 | |
发表时间:2011-04-08
zhoutao_0116 写道 SELECT NAME AS 姓名,case when USER_DATA='地址' then value end 地址,case when USER_DATA='电话' then value end 电话,case when USER_DATA='证件号' then value end 证件号,case when USER_DATA='QQ' then value end QQ,case when USER_DATA='邮编' then value end 邮编
FROM userinfo 但是 要如何把重复的 USER_ID 列 合并到一起去呢? |
|
返回顶楼 | |