JOIN或UNION可以折叠多行以在子查询中使用

时间:2010-05-14 16:00:26

标签: tsql

我想获得与给定ID匹配的所有标签:

select tag where id = 101 //returns 4 rows
soup
nuts
juice
milk

只有现在,我想将其用作子查询 -

select idList, (select tag where id = 101) itemsOnList, shopper from assignedLists

变为:

10 | soup,nuts,juice,milk | Mom

3 个答案:

答案 0 :(得分:1)

这实际上是一件非常棘手的事情。 我见过的最好的参考是here。以下查询来自该文章中的示例。还有更多选择。

select
  idList,
  (
    select name + ','
    from tag
    where id = 101
    for xml path('')
  ) as itemsOnList,
  shopper
from
  assignedLists

答案 1 :(得分:0)

检查this。需要免费订阅(如果您是sql程序员,则无论如何都需要访问此站点)

答案 2 :(得分:0)

查看PIVOT命令。它不会完全符合您的要求,但它是相似的。如果你想真正做到这一点,即将数据集转换为逗号分隔字符串的标量值,则必须创建一个带有表参数的用户定义标量函数。