• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

高手請進--以前有人問過,好像無解啊,有沒有好一點的解決方案...在線結貼...

gopark 2005-01-21 02:04:04
A表有列ID、char1
B表有列ID、char1、char2

B表是A表的从表,关系是1:n

现想select这样的内容,如何通过SQL来实现
A.ID,A.char1,B.char2

其中B.char2是多条记录叠加的内容。

譬如说:
A表中一条记录为
1 A1
2 A2
.
.
.
B表中有3条记录,分别
1 B11 B21
1 B12 B22
1 B13 B23
2 BB2 BA3
2 BB2 BB3

则我Select出来的内容应该是:
1 A1 B21,B22,B23
2 A2 BA3,BB3

其中我的逗号是另外加上去的。

请问如何写这样的语句?
...全文
47 点赞 收藏 4
写回复
4 条回复
Softlee81307 2005年01月21日
上面建函數GetB 再在a表中調用
select *,dbo.GetB(id) from a 就得出結果
-----------------------
1 A1 B21,B22,B23
2 A2 BA3,BB3
回复 点赞
Softlee81307 2005年01月21日
Create Table A (id int,char1 varchar(10) )
Create Table b (id int,char1 varchar(10),char2 varchar(10) )
insert into A
select 1,'A1' UNION SELECT 2,'A2'
Insert into B
select 1,'B11','B21' UNION ALL Select 1,'B12','B22'
--------------------------------
Create Function GetB(@i int)
returns varchar(200)
as
begin
Declare @s varchar(200)
set @s=''
if exists(select * from B where id=@i)
begin
select @s=@s+char2+',' from B where id=@i
set @s=substring(@s,1,len(@s)-1)
end
return(@s)
end
------------------------End function ----------
select *,dbo.GetB(id) from a
回复 点赞
xiajianfeng 2005年01月21日
--try

CREATE FUNCTION GetChar2 (@ID VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @char2 AS VARCHAR(100)
SET @char2 = ''
SELECT @char2 = @char2 + ',' + RTRIM(char2) FROM B WHERE [ID] = @ID
RETURN(RIGHT(@char2, LEN(@char2) - 1))
END

--调用
SELECT *, dbo.GetChar2([ID]) AS char2 FROM A
回复 点赞
icedut 2005年01月21日
网上有好多把
都是用函数实现的
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告