4

我有一个正在使用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);

输出 :-

在此处输入图像描述

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

我需要为上述查询显示我的输出,例如 在此处输入图像描述

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

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

请尝试帮助我更正此查询..

4

1 回答 1

1

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

AND groupID = fr.ParentGroupID

然后您可能可以完全删除该 JOIN 。

于 2013-10-25T22:49:15.440 回答