暴难的字符串拼接问题(不可以用临时表 及 游标)
现在有表:
FieldValue ConcatenationOrder
-------------------------
TH NULL
LF NULL
1N4148-TAP NULL
1 1
VF 1
0.3 2
A 2
80 4
VBR 4
DO35 NULL
****************************************************************
需要拼接字符串结果如下:
------------------------------------------------
TH,LF,1N4148-TAP,1VF,0.3A,80VBR,DO35
****************************************************************
规则:
如果ConcatenationOrder字段为NULL,用逗号(,)格开,如果不为null,字符直接连接,但不同的ConcatenationOrder字段,其FieldValue需用逗号(,)格开。
不可以用临时表,不可以用游标。其他应该都可以使用。
****************************************************************
现在有一个比较接近的语句可以参考,或者推翻重新写也可以。
declare @str varchar(8000)
set @str=''
select @str=@str+',' +cast(FieldValue as varchar) from
(
select * from testtable
) x
set @str=right(@str,len(@str)-1)
select @str
****************************************************************
表结构数据提供:
if exists (select * from dbo.sysobjects where id = object_id(N'[TestTable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [TestTable]
GO
create table TestTable(
FieldValue varchar(80),
ConcatenationOrder int
)
GO
insert into TestTable
select 'TH',NULL
union select 'LF', NULL
union select '1N4148-TAP',NULL
union select '1',1
union select 'VF',1
union select '0.3',2
union select 'A',2
union select '80',4
union select 'VBR',4
union select 'DO35',NULL
Go
select * from testtable
GO