首页 > 解决方案 > 如何在STUFF sql server里面使用where?

问题描述

所以我想在一列中显示多行数据,我发现在 sql server 上使用东西可以做到这一点。

但我被困在如何在东西查询中使用父字段的位置。

我尝试使用具有相同名称的父字段,但出现错误,并且我还尝试在父字段上使用别名但同样的错误。

SELECT 
id_collector, 
branch 
= STUFF(
    (
    SELECT 
    ', '+ a.group_branch_id
    from AMAS.dbo.tbl_area_collector a
    where id_collector = id_collector
    for XML path('')), 1, 1, ''
      )
from AMAS.dbo.tbl_area_collector GROUP BY id_collector

标签: sqlsql-server

解决方案


限定查询中的所有列引用!然后您的查询更有可能在第一次工作:

SELECT tac.id_collector, 
       STUFF( (SELECT ', ' + tac2.group_branch_id
               FROM AMAS.dbo.tbl_area_collector tac2
               WHERE tac2.id_collector = tac.id_collector
               FROM XML PATH('')
              ), 1, 1, ''
            ) as branches
FROM AMAS.dbo.tbl_area_collector tac
GROUP BY tac.id_collector;

推荐阅读