我快崩溃了,大家来帮帮忙吧
有这样两张表:
表A(主键AID) 表B(主键BID)
AID Name BID AID Name Text
1 a 1 1 x a1
2 b 2 1 y a2
3 c 3 1 z a3
4 2 r a4
5 3 s a5
现在两表关联查询,希望出来这样的结果:
AID A.Name Text
1 a a1,a2,a3
2 b a4
3 c a5
不能在程序里处理...所以该怎么写这个查询SQL?
可以用临时表...
有这样两张表:
表A(主键AID) 表B(主键BID)
AID Name BID AID Name Text
1 a 1 1 x a1
2 b 2 1 y a2
3 c 3 1 z a3
4 2 r a4
5 3 s a5
现在两表关联查询,希望出来这样的结果:
AID A.Name Text
1 a a1,a2,a3
2 b a4
3 c a5
不能在程序里处理...所以该怎么写这个查询SQL?
可以用临时表...
------解决方案--------------------又是一个合并报表的问题
把我的这个代码拿去看一下
/*现在有如下两张表分别为:
表A
ID Name
1 张三
2 李四
表B
ID XMMC CODE RYID
1 A项目一 XMONE 1
2 A项目二 XMTWO 1
3 A项目三 XMTHREE 1
4 B项目一 XMONE 2
要求一条SQL语句实现如下结果
表C
ID NAME XMONE XMTWO XMTHREE
1 张三 A项目一 A项目二 A项目三
2 李四 B项目一 [空] [空]
*/
--建表
create table testa
(
id int,
name varchar2(20)
);
create table testb
(
id int ,
xmmc varchar2(20),
code varchar2(20),
ryid int
);
--原始数据
insert into testa values( 1,'张三' );
insert into testa values( 2,'李四 ' );
insert into testb values( 1,'A项目一','XMONE',1 );
insert into testb values( 2,'A项目二','XMTWO', 1 );
insert into testb values( 3,'A项目三','XMTHREE',1 );
insert into testb values( 4,'B项目一','XMONE',2 );
--创建视图
create or replace view v_one
as
select a.id,a.name,b.xmmc as xmone
from testa a,testb b
where a.id= b.ryid and code='XMONE'
create or replace view v_two
as
select a.id,a.name,b.xmmc as xmtwo
from testa a,testb b
where a.id= b.ryid and code='XMTWO'
create or replace view v_three
as
select a.id,a.name,b.xmmc as xmthree
from testa a,testb b
where a.id= b.ryid and code='XMTHREE'
--生成报表
select a.*,b.xmtwo ,c.xmthree from v_one a,v_two b ,v_three c where a.id=b.id(+) and a.id=c.id(+)
如果要想三列在一个字段里显示用||这个连接符就可以了
------解决方案--------------------table:
CREATE TABLE TEST (XM VARCHAR(8), SL INTEGER);
INSERT INTO TEST
VALUES ('王一', 2),
('王一', 5),
('张二', 4),
('张二', 5),
('张二', 8),
('李三', 2),
('李三', 4),
('李三', 15),
('李三', 29);
WITH B (FATHER,SON,XM,CHAIN) AS
(SELECT A.XM || CHAR(ROW_NUMBER() OVER(PARTITION BY XM)) AS FATHER,A.XM || CHAR(ROW_NUMBER() OVER(PARTITION BY XM) + 1) AS SON,
A.XM, rtrim(ltrim(CHAR(A.SL)))
FROM TEST A
U