我有一个查询,其中我正在使用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: -
它只是重复allgroup列中的两个部门的allgroup,这是不正确的。它必须只显示每个部门自己的Group。我知道我必须通过departmentid group by
进行此查询,但无法完成该任务。
这里不会重复两个部门的allgroup。
注意: - 此查询适用于单个部门。
请尽量帮助我解决此问题。
答案 0 :(得分:1)
您需要将内部查询(在STUFF函数中)链接到外部查询:您有一个连接,但它不适用于该内部SELECT语句,因此STUFF函数始终在第一个记录上运行它找到而不是相关的记录。把它放在“何时离开IN(5,6)”之后:
AND groupID = fr.ParentGroupID
然后你可以完全删除那个JOIN。