1

我有一个 sql 查询将所有行合并为一个。

我尝试的是在开始时只设置一个自定义。

我的问题是总是为每个新值重复它。

我该如何解决?

提前致谢

这是我的代码:

SELECT 
   STUFF ((SELECT 'Please Select' + ' : ' + Name
          FROM Option
          ORDER BY Name
          FOR XML PATH('')), 1, 2, '') MergeResult

我需要的结果是这样的:

请选择:选项1-选项2-选项3等......

我现在得到的是:

请选择:选项1 - 请选择:选项2 - 请选择:选项3

4

2 回答 2

1

有几种方法可以做到这一点。

将 Select 移到外面:

DECLARE @Option AS TABLE ([Name] varchar(30))
INSERT INTO @Option([Name])
VALUES ('Option1'), ('Option2'), ('Option3')


SELECT 'Please Select : ' + LEFT(Options, LEN(Options) - 2)
FROM 
(
    SELECT Name + ' - '
    FROM @Option
    ORDER BY Name
    FOR XML PATH('')
) o (Options)

还有 COALESCE 方式:

DECLARE @Option AS TABLE ([Name] varchar(30))
INSERT INTO @Option([Name])
VALUES ('Option1'), ('Option2'), ('Option3')

DECLARE @Names VARCHAR(8000) 
SELECT @Names = COALESCE(@Names + ' - ', '') + Name 
FROM @Option
SELECT 'Please Select : ' + @Names
于 2013-11-01T12:53:56.700 回答
1

像这样的东西:

SELECT 
    'Please Select' + ' : ' + 
    STUFF ((SELECT Name
          FROM [Option]
          ORDER BY Name
          FOR XML PATH('')), 1, 2, '') MergeResult

即,将前缀移到外面

于 2013-11-01T12:50:54.013 回答