सार के लिए धन्यवाद! स्कीमा और डेटा प्राप्त करने के लिए दांत खींचने से कहीं बेहतर है। :-) यदि आप इसे अपनी सारगर्भित क्वेरी में प्लग इन करते हैं तो आपको वे परिणाम दिखाई देने चाहिए जो आप चाहते हैं (ठीक है, बहुत करीब - नीचे देखें)।
DECLARE @SalesRepID INT, @SurgeonID INT, @LocationID INT;
SELECT @SalesRepID = 2, @SurgeonID = 1, @LocationID = 1;
;WITH x AS
(
SELECT CommissionPercent, Categories = STUFF((SELECT ', '
+ tCat.Category FROM #tCategories AS tCat
INNER JOIN #tCommissions AS tCom
ON tCat.CategoryID = tCom.CategoryID
WHERE tCom.CommissionPercent = com.CommissionPercent
FOR XML PATH, TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '')
FROM #tCommissions AS com
WHERE SalesRepID = @SalesRepID
AND SurgeonID = @SurgeonID
AND LocationID = @LocationID
),
y AS
(
SELECT s = RTRIM(CommissionPercent) + ' (' + Categories + ')'
FROM x GROUP BY CommissionPercent, Categories
)
SELECT Result = STUFF((SELECT ', ' + s FROM y
FOR XML PATH, TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '');
परिणाम आपके द्वारा मांगे गए परिणाम से थोड़ा अलग है, लेकिन आप CommissionPercent को खींचते समय स्ट्रिंग स्वरूपण लागू करके इसे ठीक कर सकते हैं।
Result
--------------------------------------------------------
0.05 (Shirts, Shoes, Dresses), 0.10 (Hats), 0.15 (Pants)