如何在Sql Server中使用Stuff里面的组

时间:2013-08-29 09:00:05

标签: sql-server sql-server-2008 tsql

我有一个查询,其中我正在使用stuff方法。它工作正常但只在一个条件下重复相同的数据。

查询: -

select fr.repairid, fr.repairName, fr.labourMins, fr.sortOrder,
    stuff(
      (
         select ' ---> ' + groupname,departmentid
         from tblRepairGroup
         where departmentid in(5,6) 
         for XML PATH(''),TYPE
      ).value('.','NVARCHAR(MAX)'),
      1, 5, ''
    ) as allgroup
from tblFlatRateRepair fr 
inner join 
    tblRepairGroup g 
    on fr.parentGroupID = g.groupID 
where fr.repairid in (2,4);

OutPut: -

enter image description here

它只是重复allgroup列中的两个部门的allgroup,这是不正确的。它必须只显示每个部门自己的Group。我知道我必须通过departmentid group by进行此查询,但无法完成该任务。

我需要为上面的查询显示我的输出 enter image description here

这里不会重复两个部门的allgroup。

注意: - 此查询适用于单个部门。

请尽量帮助我解决此问题。

1 个答案:

答案 0 :(得分:1)

您需要将内部查询(在STUFF函数中)链接到外部查询:您有一个连接,但它不适用于该内部SELECT语句,因此STUFF函数始终在第一个记录上运行它找到而不是相关的记录。把它放在“何时离开IN(5,6)”之后:

AND groupID = fr.ParentGroupID

然后你可以完全删除那个JOIN。