将多行合并为一行

时间:2013-11-26 10:04:35

标签: sql sql-server sql-server-2012

查看 MyView

............. 
. Id | Value.
.............
.  1  |  A  .
.  2  |  B  .
.  3  |  C  .
.  4  |  D  .
.............

我的查询如下:

“从dbo.MyView中选择ID> 1”

真实结果:

.............
. Id | Value.
.............
.  2  |  B  .
.  3  |  C  .
.  4  |  D  .
.............

我希望或希望的结果:

“B,C,D”


我需要一个字符串(一行,一列)来表示列值的所有值。

我该怎么做?任何帮助将不胜感激?

3 个答案:

答案 0 :(得分:2)

标量值函数如何:

Create FUNCTION [dbo].[GetResults] 
(
    @ID int
)
RETURNS varchar(200)
AS
BEGIN
    DECLARE @Result varchar(200)

    SELECT @Result = COALESCE(@Result + ', ','') + Value
    From
        (   
            SELECT  Value
            FROM       MyTable
            WHERE     (ID > @ID)

        ) UniqueValues

    RETURN @Result

END

答案 1 :(得分:1)

你去吧

SELECT ','+Value from MyTable for xml path('')

OR

declare @test varchar(100)
select @test = coalesce(@test+',','')+Value from MyTable
select @test

答案 2 :(得分:1)

对于View使用Milen提出的解决方案,创建标量值函数,然后在视图中使用“dbo.GetResults(ParameterHere)作为结果”