欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

sql 连接查询有关问题

更新时间: 2014-01-05 02:14:15 责任编辑: Author_N1

 

sql 连接查询问题
表 A                                          表B
id     name                            id     name
1      write                           write     写
2      read                            read      读
2      write
3      read
如果我想要得到这样的效果
表C
id  name1  name2
1    空     write
2    read  write
3    read      空
请问该如何实现呢?
--参考方法--
行转列问题

With A As (
Select 1 As Id, 'write'   As Name From Dual
Union All
Select 2 As Id, 'read'   As Name From Dual
Union All
Select 2 As Id, 'write'   As Name From Dual
Union All
Select 3 As Id, 'write'   As Name From Dual

)
Select  Id,
Max(Decode(Name,'read','read')) As Name1,
Max(Decode(Name,'write','write')) As Name2
From A
group by id;




--参考方法--

CREATE TABLE Ta(ID VARCHAR2(10),NAME VARCHAR2(20));

INSERT INTO TA VALUES('1','write');
INSERT INTO TA VALUES('2','read');
INSERT INTO TA VALUES('2','write');
INSERT INTO TA VALUES('3','read');


SELECT  ID,(SELECT NAME FROM TA WHERE ID=TMP.ID AND NAME='read')NAME1,(SELECT NAME FROM TA WHERE ID=TMP.ID AND NAME='write')NAME2  FROM TA TMP GROUP BY ID;

ID NAME1  NAME2 
1         write 
2  read   write 
3  read         


上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:14:15
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7337/
本文WWW.DOC100.NET DOC100.NET版权所有。