SQL中将查询的结果集整合成一条信息

  有时需要将在数据库中查询的结果集(显示为不同列)中每一列的数据整合成一条用某一符号(例如“;”)相连的一条数据,如下:

 转换为数据:

 

  在程序中控制比较简单,可以查出datatable,然后循环获取。本文介绍在SQL存储过程中直接得出结果。

  代码如下:

  

Label开始

    declare @DocID varchar(50)

    select @DocID=DocID from Information where InfoID=@Fid

    

    declare @TABEL table(

        LABEL varchar(50)

    )

    INSERT INTO @TABEL

    SELECT LL.LABEL FROM INFOLABEL AS IL

    LEFT JOIN LABEL AS LL ON IL.LABELID = LL.LABELID

    WHERE IL.DOCID = @DOCID



    DECLARE @LABELS VARCHAR(200)

    DECLARE @LABEL VARCHAR(50)



    SET @LABELS = ''



    --删除空和null的数据

    DELETE FROM @TABEL WHERE LABEL IS NULL OR LABEL = ''



    WHILE(EXISTS(SELECT TOP 1 1 FROM @TABEL))

    BEGIN

        SELECT TOP 1 @LABEL = LABEL  FROM @TABEL

        SET @LABELS = @LABELS + @LABEL + ''

        DELETE FROM @TABEL WHERE LABEL = @LABEL

    END



    IF(@LABELS <> '' AND @LABELS IS NOT NULL)

    BEGIN

        SET @LABELS = SUBSTRING(@LABELS,0,LEN(@LABELS))

    END

---Label结束

  大体流程:

  1.获取结果集;

  2.建立临时表:

declare @TABEL table(

        LABEL varchar(50)

    )

  3.往临时表里插入查到的结果集;

  4.删除临时表中为空的列;

  5.用while循环 每循环一条将查询的数据加上间隔符号“;”插入到变量@LABELS 中;

  6.每一次循环最后删除刚刚循环的这条数据,一边进入下一条数据,防止重复;

  7.如果变量@LABELS 不为空不为NULL,用SUBSTRING函数截取,去掉最后一个“;”。

 

 

你可能感兴趣的:(sql)