如何在SQL Server中将多行连接成一列?

我已经高低搜索了这个答案,但我无法弄明白.我对SQL Server比较陌生,但还没有很好的语法.我有这个数据结构(简化): Table “Users” | Table “Tags”:UserID UserName | TagID UserID PhotoID1 Bob | 1 1 12 Bill | 2 2 13 Jane | 3 3 14 Sam | 4 2 2———

我已经高低搜索了这个答案,但我无法弄明白.我对SQL Server比较陌生,但还没有很好的语法.我有这个数据结构(简化):

Table "Users"         | Table "Tags":
UserID    UserName    | TagID    UserID    PhotoID
1         Bob         | 1        1         1
2         Bill        | 2        2         1
3         Jane        | 3        3         1
4         Sam         | 4        2         2
-----------------------------------------------------
Table "Photos":              | Table "Albums":
PhotoID   UserID    AlbumID  | AlbumID     UserID
1         1         1        | 1           1
2         1         1        | 2           3
3         1         1        | 3           2
4         3         2        |
5         3         2        |

我正在寻找一种方法来获取所有照片信息(简单)以及该照片的所有标签连接如CONCAT(用户名,’,’)AS标签当然删除了最后一个逗号.我有一段时间试图这样做.我在this article中尝试了这个方法,但是当我尝试运行查询说我不能使用DECLARE语句时出现错误…你们有什么想法可以做到这一点吗?我正在使用VS08和其中安装的任何数据库(我通常使用MySQL,所以我不知道这是什么类型的DB真的是……它是一个.mdf文件?)

解决方法

我要创建一个UDF:

create function GetTags(PhotoID int) returns @tags varchar(max)
as
begin
    declare @mytags varchar(max)
    set @mytags = ''

    select @mytags = @mytags + ',' + tag from tags where photoid = @photoid

    return substring(@mytags,3,8000)
end

然后,您所要做的就是:

select GetTags(photoID) as tagList from photos

关于作者: dawei

【声明】:石家庄站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐