应该写清楚点:现有如下表结构:
table1:
GroupID Text Sequence
001 text11 1
001 text12 2
001 text13 3
002 text21 1
002 text22 2想得到如下记录集:
GroupID Text
001 text11,text12,text13
002 text21,text22即,把GroupID相同的记录的Text字段值连接起来,用逗号分隔。注:每个GroupID对应的记录条数不定。
请提供相对简练的SQL语句,可以使用存储过程、自定义函数等来实现。
table1:
GroupID Text Sequence
001 text11 1
001 text12 2
001 text13 3
002 text21 1
002 text22 2想得到如下记录集:
GroupID Text
001 text11,text12,text13
002 text21,text22即,把GroupID相同的记录的Text字段值连接起来,用逗号分隔。注:每个GroupID对应的记录条数不定。
请提供相对简练的SQL语句,可以使用存储过程、自定义函数等来实现。
returns varchar(2000)
as
begin
declare @str varchar(2000)
set @str=''
select @str=@str+','+rtrim([text]) from table1
where GroupID=@Id
set @str=right(@str,len(@str)-1)
return @str
end
select distinct GroupID,dbo.getstr(GroupID)
from table1
returns varchar(2000)
as
begin
declare @str varchar(2000)
set @str=''
select @str=@str+','+rtrim([text]) from table1
where GroupID=@Id
order by Sequenceset @str=right(@str,len(@str)-1)
return @str
end
select distinct GroupID,dbo.getstr(GroupID) as [text]
from table1
CREATE FUNCTION dbo.GetList ( @SearchTable varchar(50),@SearchField varchar(50), @SearchValue varchar(50),@ListField varchar(50) )
RETURNS varchar(1000) AS
BEGIN
declare @sListValue as varchar(1000), @sSql as varchar(1000)
set @sListValue = ''
set @sSql = 'select @sListValue=@sListValue + rtrim(' + @ListField + ') from ' + @SearchTable + ' where ' + @SearchField + '=''' + @SearchValue + ''''
exec @sSql
set @sListValue = right(@sListValue, len(@sListValue)-1)
return @sListValue
END还是老问题,SQL语句是变化的,主要是表名和where子句字段名都变化,无法直接执行,只能用exec?但这东东放到函数里,这时执行它会提示
Could not find stored procedure 'select @sListValue=@sListValue + rtrim(Word) from English where GroupID='1''.如何解决!