2013-08-29 25 views
4

我有一個查詢,其中我使用的是stuff方法。它工作正常,但只能在一種情況下重複相同的數據。如何在Sql Server中使用組內的東西

查詢: -

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); 

輸出: -

enter image description here

它只是重複所有組兩個部門在所有組列這是不是唯一的right.It必須證明它是每個部門自己的組。我知道我必須group by這個查詢由departmentid但無法完成該任務。

我要表達我對上面的查詢輸出像 enter image description here

這是不會重複的所有組兩個部門。

注意: - 此查詢適用於單個部門。

請儘量幫我正確此查詢..

+1

在我看來,問題出在XML而不是東西方法。如果你使用它來連接單個字符串中的列,你可以嘗試使用一個函數,然後你可以按照detamentid進行分組並將它鏈接到主查詢*之前*使用東西 – Zelloss

回答

1

您需要連接內部查詢(在STUFF功能)外查詢:你有加入,但它不適用於即內部SELECT語句,所以STUFF函數總是在它找到的第一條記錄上運行,而不是相關記錄。把這個放在「IN(5,6)」的地方:

AND groupID = fr.ParentGroupID 

然後你可以完全刪除那個JOIN。

相關問題