日期:2014-05-18  浏览次数:20380 次

求一条SQL代码?谢谢谢
表bevyman
bevy_id     bevy_man     bevy_sort
    1                   小华           2
    2                   小朱           2
    3                   小水           2
    ...               ...             ...
如何output   为字符串: "小华,小朱,小水 "

------解决方案--------------------
参考:
CREATE TABLE A(id INT,country VARCHAR(100))
INSERT A
SELECT 1, '中国;日本;韩国 ' UNION ALL
SELECT 2, '美国;意大利;法国 ' UNION ALL
SELECT 3, '德国 '
SELECT * FROM A

-- 建立一个辅助的临时表就可以了
SELECT TOP 8000 id = identity(int,1,1)
INTO # FROM syscolumns a, syscolumns b
SELECT
A.ID,
COUNTRY = SUBSTRING(A.COUNTRY, B.ID, CHARINDEX( '; ', A.COUNTRY + '; ', B.ID) - B.ID)
FROM A, # B
WHERE SUBSTRING( '; ' + a.COUNTRY, B.id, 1) = '; '
ORDER BY 1,2
GO

DROP TABLE A,#

id country
----------- ----------------------------------------------------------------
1 中国;日本;韩国
2 美国;意大利;法国
3 德国

(所影响的行数为 3 行)


------解决方案--------------------
不好意思,忘了逗号,改正如下:
declare @a varchar(100)
set @a= ' '
select @a=@a+bevy_man+ ', ' from tablename
select left(@a,len(@a)-1) as output
------解决方案--------------------
declare @a varchar(100)
set @a= ' '
select @a=@a+isnull(bevy_man, ' ')+ ', ' from tablename
select left(@a,len(@a)-1) as output