2010-04-09 89 views
0
分隔

我有如下表:SQL服務器:我怎麼能列出一個單行表的獨特價值,用逗號

CREATE TABLE TEMP (ID INT, SEGMENT CHAR(1), SEGOFF INT, CHECKED SMALLDATETIME) 

INSERT INTO TEMP VALUES (1,'A',0,'2009-05-01') 
INSERT INTO TEMP VALUES (2,'B',1,'2009-05-01') 
INSERT INTO TEMP VALUES (3,'C',0,'2009-05-01') 
INSERT INTO TEMP VALUES (4,'A',0,'2009-05-02') 
INSERT INTO TEMP VALUES (5,'B',2,'2009-05-02') 
INSERT INTO TEMP VALUES (6,'C',1,'2009-05-02') 
INSERT INTO TEMP VALUES (7,'A',1,'2009-05-03') 
INSERT INTO TEMP VALUES (8,'B',0,'2009-05-03') 
INSERT INTO TEMP VALUES (9,'C',2,'2009-05-03') 

我想顯示在用逗號分隔單列不同段(例如, :A,B,C)

我嘗試如下:

DECLARE @SEGMENTList varchar(100) 

SELECT @SEGMENTList = COALESCE(@SEGMENTList + ', ', '') + 
    SEGMENT 
FROM TEST 


SELECT @SEGMENTList 

它顯示了A,B,C,A,B,C,A,B,C

我需要更改我的查詢?謝謝大家!

回答

2

您可以將GROUP BY Segment添加到您的選擇,它可能會工作。

像這樣:

DECLARE @SEGMENTList varchar(100) 

SELECT @SEGMENTList = COALESCE(@SEGMENTList + ', ', '') + 
    SEGMENT 
FROM TEMP 
GROUP BY SEGMENT 


SELECT @SEGMENTList 
+0

是感謝! :) 它需要 – RedsDevils 2010-04-09 08:45:19

0

this

/*

CREATE TABLE [dbo].[TableA](
    [id] [int] NULL, 
    [type] [nvarchar](10) NULL 
) ON [PRIMARY] 

*/

declare @temp table 
(
    [type] [nvarchar](10) NULL 
) 

    insert into @temp 
    select distinct type from TableA 

    declare @s1 varchar(8000) 

    update t 
     set 
     @s1 = ISNULL(@s1 + ',', '') + '''' + REPLACE(t.Type, '''', '''''') + '''' 
    from @temp t 

    select @s1 
0
SELECT @SEGMENTList = COALESCE(@SEGMENTList + ', ', '') + 
    SEGMENT 
FROM 
(SELECT DISTINCT Segment FROM #TEMP) AS #Test