说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

求教SQL语句,高手、或刚入门的同道都进来讨论一哈

编辑:说三道四文库 发布时间:2018-02-24 06:26
HTML文档下载 WORD文档下载 PDF文档下载
有这样两张表(主从表)
TABLE1:
AB_ORDER_ID int

TABLE2:
T2_ID int
T2_AB_ORDER_ID int
CODE_NAME varchar 20

我SQL语句:SELECT CODE_NAME,AB_ORDER_ID FROM TABLE1 
LEFT OUTER JOIN TABLE2 ON T2_AB_ORDER_ID = AB_ORDER_ID

现在得到这样的结果集:
CODE_NAME  AB_ORDER_ID 
性能       11956 
包装       11956
包装       11994 
性能       11994 
包装       12101 

我想得到这样的结果:
CODE_NAME  AB_ORDER_ID 
性能、包装 11956 
包装、性能 11994 
包装       12101 
(按AB_ORDER_ID归并)

有表A,
 id pid
 1   1
 1   2
 1   3
 2   1
 2   2
 3   1
如何化成表B:
 id pid
  1  1,2,3
  2  1,2
  3  1
或者是从表B变成A(不要用游标)
以前有相似的列子,现在找不到了,帮帮忙!


--1.创建一个合并的函数
create function fmerg(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+cast(pid as varchar) from 表A where id=@id
set @str=right(@str,len(@str)-1)
return(@str)
go

--调用自定义函数得到结果
select distinct id,dbo.fmerg(id) from 表A
create function getstr(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+'、'+rtrim(CODE_NAME) from TABLE2 where T2_AB_ORDER_ID=@id
set @str=right(@str,len(@str)-1)
return(@str)
go

--调用“
select AB_ORDER_ID,dbo.getstr(AB_ORDER_ID) from TABLE1 group by AB_ORDER_ID
create table d(F1 varchar(20),F2 varchar(20))

insert d values('001','x')
insert d values('001','y')
insert d values('002','y')
insert d values('002','x')
insert d values('003','z')
insert d values('003','p')
go

create function test1(@a varchar(20))
returns varchar(200)
as 
begin
declare @b varchar(200)
set @b=''
select @b=@b+rtrim(ltrim(F2)) from d where f1=@a
return @b
end

select distinct f1,dbo.test1(f1) from d


select distinct f1,dbo.test1(f1) from d
强,多谢各位乐。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘