DECLARE @table1 TABLE(component VARCHAR(10), bin INT, prd INT)INSERT INTO @table1(component, bin, prd)VALUES('2.1' , 1, 217),('6.5' , 4, 217),('7.1' ,3, 217),('7.6' ,5, 217),('7.7' ,5, 217),('1.3' ,2, 217),('1.1' ,1, 298),('3.1' ,1, 298),('6.2' ,2, 298),('7.3' ,5, 298),('8.1' ,3, 298),('8.4' ,4, 298),('1.1' ,5, 298);WITH CTE AS (SELECT component, bin, prd, DENSE_RANK() OVER(PARTITION BY prd ORDER BY bin) AS drFROM @table1),Recur AS ( SELECT prd,dr,CAST(component AS VARCHAR(1000)) AS combo FROM CTE WHERE dr=1 UNION ALL SELECT c.prd,c.dr,CAST(r.combo + '|' + c.component AS VARCHAR(1000)) FROM Recur r INNER JOIN CTE c ON c.dr = r.dr+1 AND c.prd = r.prd),Results AS (SELECT prd,combo, RANK() OVER(PARTITION BY prd ORDER by dr DESC) AS rnFROM Recur)SELECT prd,comboFROM ResultsWHERE rn=1ORDER BY prd,combo;
DECLARE @table1 TABLE(component VARCHAR(10), bin INT, prd INT)INSERT INTO @table1(component, bin, prd)VALUES('2.1' , 1, 217),('6.5' , 4, 217),('7.1' ,3, 217),('7.6' ,5, 217),('7.7' ,5, 217),('1.3' ,2, 217),('1.1' ,1, 298),('3.1' ,1, 298),('6.2' ,2, 298),('7.3' ,5, 298),('8.1' ,3, 298),('8.4' ,4, 298),('1.1' ,5, 298);;WITH UNIQUEnTuples (n, prd, bin, component, ID) AS ( SELECT 1, prd, CAST(bin AS VARCHAR(8000)) ,'[' + CAST(component AS VARCHAR(8000)) + ']' ,bin FROM @table1 UNION ALL SELECT 1 + n.n, prd, CAST(t.bin AS VARCHAR(8000)) + ',' + n.bin ,'[' + CAST(t.component AS VARCHAR(8000)) + ']' + n.component ,t.bin FROM UNIQUEnTuples n CROSS APPLY ( SELECT bin, component FROM @table1 t WHERE t.bin < n.ID AND t.prd = n.prd) t )SELECT n, a.prd, a.componentFROM ( SELECT n, prd, bin, component ,m=MAX(n) OVER (PARTITION BY prd) FROM UNIQUEnTuples) aWHERE n = mORDER BY n, a.prd, a.bin