Sql server 2008 在sql server 2008中,如何在一行中显示与另一个表中相同描述\u id的多行?

Sql server 2008 在sql server 2008中,如何在一行中显示与另一个表中相同描述\u id的多行?,sql-server-2008,Sql Server 2008,表1中的描述和表2中的描述 结果应该是 description_id description -------------- ------------- 1 Ampicillin Oral 1 Ofloxacin Oral 1 Sulfamoxole+Trimethoprim Oral 2 Letrozole Oral 2

表1中的描述和表2中的描述

结果应该是

description_id       description
--------------      -------------
1                   Ampicillin Oral
1                   Ofloxacin Oral
1                   Sulfamoxole+Trimethoprim Oral
2                   Letrozole Oral
2                   Flunarizine Oral

我假设
table2
也有一个
description\u id
列,它是dbo.table1中的主键:

description_id       description
--------------       -----------
1                    Ampicillin Oral,Ofloxacin Oral, Sulfamoxole+Trimethoprim Oral
2                    Letrozole Oral, Flunarizine Oral

我假设
table2
也有一个
description\u id
列,它是dbo.table1中的主键:

description_id       description
--------------       -----------
1                    Ampicillin Oral,Ofloxacin Oral, Sulfamoxole+Trimethoprim Oral
2                    Letrozole Oral, Flunarizine Oral

我认为您需要的是一个聚合函数,它可以将描述字符串连接在一起

但是,尽管SQL Server具有用于聚合数字的内置函数(例如,总和和平均值),但没有内置的聚合字符串串联函数

这给您留下了两个主要选项:

  • 在客户端上执行连接
  • 使用变通技术,如XML路径、递归CTE或使用嵌入式公共语言运行时包 对于选项2,有一些文章介绍了如何做到这一点,例如。事实上,我刚刚看到亚伦·伯特兰的回答,这
    向您展示了在您的情况下如何做到这一点:)

    我认为您需要的是一个聚合函数,它可以将描述字符串连接在一起

    但是,尽管SQL Server具有用于聚合数字的内置函数(例如,总和和平均值),但没有内置的聚合字符串串联函数

    这给您留下了两个主要选项:

  • 在客户端上执行连接
  • 使用变通技术,如XML路径、递归CTE或使用嵌入式公共语言运行时包 对于选项2,有一些文章介绍了如何做到这一点,例如。事实上,我刚刚看到亚伦·伯特兰的回答,这
    向您展示了在您的情况下如何执行此操作:)

    是否始终有两项或两项以下的匹配项?或者是否有多个条款?它是否总是匹配两个或更少的项目?还是有很多条款?