`

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

阅读更多
前天笔试碰到的一个题,是列转行的,我把SQL贴出来,大家帮我看看,功能是实现了,不知道是否符合要求。
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
分享到:
评论
21 楼 wxno1 2011-04-18  
阳光晒晒 写道
wxno1 写道
decode 解决一切行转列,可惜只有oracle能使

case when ???



还真没使过case when 学习了
20 楼 阳光晒晒 2011-04-15  
wxno1 写道
decode 解决一切行转列,可惜只有oracle能使

case when ???
19 楼 xici_magic 2011-04-14  
Case函数能解决。
18 楼 ganjp 2011-04-14  
咦……哈哈
17 楼 qiang106 2011-04-14  
好像Oracle、MySQL 用case可以,SQLServer没试过
16 楼 albb0608 2011-04-14  
谢谢大家,受益匪浅
15 楼 wxno1 2011-04-13  
decode 解决一切行转列,可惜只有oracle能使
14 楼 thomaswen151 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
;
13 楼 yellow0323 2011-04-12  
decode可以
12 楼 borland 2011-04-11  
用decode啊,easy
11 楼 kisbo110 2011-04-09  
考的是sql语句的行列转换
10 楼 jackra 2011-04-08  
select
id,
max(case
   when user_data='QQ' then value
end)  QQ,
[other same]....
from userdetail
group by id
9 楼 为爱Debug 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 列 合并到一起去呢?
8 楼 zhoutao_0116 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
7 楼 Aaron_Zhang 2011-04-08  
oracle 的 wm_concat 表示没鸭梨
6 楼 xsxjb 2011-04-08  
扩展了视野~  谢谢LZ 分享。
5 楼 galfordliu 2011-04-08  
pivot SQL SERVER2005才新增的。
这题邹建写的一本SQL2000的书上有解决方案,很强大。
4 楼 wangzy24 2011-04-07  
用decode函数可以,或者用case语句
3 楼 jiangnan2112 2011-04-04  
面试什么职位考这种题
pivot好像是oracle11才有的函数,估计大家用11的不多吧,不知道也正常
2 楼 sayes 2011-03-31  
我认为是在考你会不会使用 pivot

相关推荐

    中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题

    中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 v中兴笔试题 中兴笔试题 ...中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题

    java笔试题笔试题

    java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 ...

    嵌入式软件笔试题合集.zip

    嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集...

    C++面试题笔试题C++ 数据结构算法笔试题资料合集.zip

    C++面试题笔试题C++ 数据结构算法笔试题资料合集: 50个C、C++面试题.pdf C++ 数据结构、算法笔试题.docx C++基础面试题.docx C++开发工程师面试题库.docx C++技能测试试卷一及答案.docx C++技能测试试卷二及答案....

    华信笔试题笔试题笔试题

    大连华信去年的笔试题,可以给各位即将工作的同学一些参考

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集.zip

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx ...

    C#笔试题大全C#笔试题大全C#笔试题大全.

    C#笔试题大全C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.,让你...

    软件公司——华信笔试题——供大家参加笔试时参考

    【标题】:“软件公司——华信笔试题——供大家参加笔试时参考” 这是一份与软件公司华信相关的笔试题目集锦,旨在为准备参加华信或其他类似软件公司笔试的求职者提供参考资料。这类题目通常涵盖了计算机科学和技术...

    中兴面试过程 威盛笔试题答案 Nec试题 Ibm笔试样题

    中兴面试过程 威盛笔试题答案 Nec试题 Ibm笔试样题

    2016年腾讯校招笔试题(主观题).docx

    2016年腾讯校招笔试题(主观题2016年腾讯校招笔试题(主观题2016年腾讯校招笔试题(主观题2016年腾讯校招笔试题(主观题2016年腾讯校招笔试题(主观题2016年腾讯校招笔试题(主观题2016年腾讯校招笔试题(主观题2016...

    iOS开发试题大全:笔试面试一千题[多线程篇]

    iOS开发试题大全:笔试面试一千题,包含1000道iOS试题和参考答案,题型包含:判断题、单选题,多选题和面试题。分为这套资料共分为"语法","常识","界面","iOS","操作","数据结构","多线程","网络","多媒体","安全"十...

    校招笔试题2014

    这些文件可能包含了各种类型的题目,例如选择题、填空题、编程题和解答题,每一道题目都对应一个特定的技术主题。 总结上述信息,我们可以预想这个压缩包中的内容将覆盖广泛的技术领域,包括但不限于: 1. **编程...

    南京各大软件公司笔试面试题

    (内部资料) 南京-安捷斯计算机.doc 南京-北极星.doc 南京-长天智远.doc ...没有全部列出,想要找工作的朋友不妨看一看,或许有些帮助,希望能让大家有所收获,也祝愿大家能早日找到理想的工作,别忘了多支持哦!

    2021紫光笔试题IC校招笔试题.zip

    《2021紫光笔试题IC校招笔试题》是一个针对集成电路(IC)行业的笔试题目集合,主要针对应届毕业生的招聘过程。紫光集团是中国知名的集成电路设计与制造企业,其笔试题目的涵盖范围广泛,旨在测试应聘者的专业知识、...

    逻辑题 各大公司笔试

    4. **图形推理**:这是逻辑题中常见的一类,通过观察图形的形状、大小、颜色、位置等变化规律,推断出下一个图形。这考察了你的空间想象能力和对模式识别的能力。 5. **逻辑判断**:这类题目通常会给出一系列陈述或...

    C++ 笔试题汇总 C++ 笔试题汇总.doc

    链表反转是一个经常被问到的面试题,也是一个非常基础的问题。链表反转可以使用遍历和递归两种方法实现。遍历方法需要使用三个指针,pre、cur 和 ne,分别指向当前节点、当前节点的下一个节点和当前节点的上一个节点...

    2012-2015历年中国移动笔试真题资料移动招聘合集.zip

    2012-2015历年中国移动笔试真题资料移动招聘合集: 2010年中国移动北京分公司校园招聘网申测试题.doc 2010江苏移动招聘笔试完整试卷.doc 2011年中国移动广东公司招聘笔试试题及答案---.doc 2011年江苏移动招聘笔试...

    互联网校招题库资料笔试面试真题具体面试问题回答技巧腾讯阿里培训资料.zip

    ava工程师面试题大全-100%公司笔试题你都能碰到几个.docx Java开发工程师上机笔试题.docx Java开发求职面试题.docx Java开发笔试题.docx Java数据结构类面试题.docx Java数据结构题.docx Java笔试面试宝典.docx Java...

Global site tag (gtag.js) - Google Analytics