SELECT记录为逗号分隔的字符串

时间:2014-06-18 15:17:47

标签: sql sql-server tsql select sql-server-2008-r2

所以我有以下表格:

Table 1

fname    mi    lname    empid

John     A     Smith    1202
Bob            Doe      9815


Table 2

unid    empid

1015     1202
1015     9815


Table 3

unid    Item

1015    ABC
1015    DEF

我的预期输出应该是(当提供unid = 1015时)

fname    mi    lname    item

John     A     Smith    ABC, DEF
Bob            Doe      

现在这将是理想的,但我非常乐意处理前端重复的[Item]值。

我目前的陈述是:

select p.FNAME,p.MI,p.LNAME, ac.EQUIP from table1 t1, table2 t2, table3 t3  
where t1.EMPID = t2.EMPID and t2.UNID = t3.UNID and t2.unid = '1015' group by t1.FNAME, t1.MI, 
t1.LNAME,t3.EQUIP

对于我的生活,我无法弄清楚如何将item中的值(可以是0或更多,最多为8)作为逗号分隔的字符串。我的问题是,由于站点/客户端的限制,我不能使用SP,但这必须在一个SQL语句中完成。

这是在SQL SERVER 2008 R2上。

1 个答案:

答案 0 :(得分:1)

Select distinct t.fname,t.mi,t.lname,
    STUFF((Select distinct i.item +  ',' 
        from Table3 i 
    where t.unid = tt.unid AND i.unid = '1015' 
    ORDER BY i.unid
    FOR XML PATH(''),TYPE).value('.', 'NVARCHAR(MAX)') 
                        , 1,  0, ' ') from Table1 t
                        INNER JOIN Table2 tt
                        ON tt.empid = t.empid
                     group by
                            t.FNAME, 
                            t.MI,
                            t.LNAME