表Master
:
----------------------
| Name | ID |
----------------------
| A | 1 |
| B | 2 |
| C | 3 |
----------------------
表Detail
:
----------------------
| masterID | det |
----------------------
| 1 | 21 |
| 1 | 31 |
| 1 | 442 |
| 1 | 76 |
| 2 | 1 |
| 2 | 90 |
| 3 | 48 |
| 3 | 56 |
| 3 | 109 |
----------------------
要求的结果:进行连接和连接,但将连接值的数量限制为 X(此处为 2),如果更多,则创建一个新行。例如,上面的预期结果将是:
----------------------
| Name | dets |
----------------------
| A | 21, 31 |
| A | 442, 76|
| B | 1, 90 |
| C | 48, 56 |
| C | 109 |
----------------------
使用下面的代码,我可以得到所有结果连接但是我需要关于如何限制连接记录数量的帮助:
SELECT Master.Name,
STUFF((
SELECT ','+Detail.det
FROM Detail
WHERE Master.ID = Detail.masterID
FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)')
,1,2,'')
FROM Master
还为它创建了 SQLFiddle:http ://sqlfiddle.com/#!6/a1b69/1/0