| id | TestConcat |
|----|--------------|
| 1 | Test1 Test3 |
| 3 | Test4 Test5 |
CREATE TABLE MyTable
([ID] int, [TestString] varchar(5))
;
INSERT INTO MyTable
([ID], [TestString])
VALUES
(1, 'Test1'),
(2, 'Test2'),
(1, 'Test3'),
(3, 'Test4'),
(3, 'Test5')
;
**Query 1**:
SELECT
dups.id
, oa.TestConcat
FROM (
SELECT ID
FROM MyTable
GROUP BY id
HAVING COUNT(*) > 1
) DUPS
OUTER APPLY (
SELECT ' ' + TestString
FROM myTable
WHERE ID = DUPS.ID
FOR XML PATH('')
) OA (TestConcat)
**[Results][2]**:
| id | TestConcat |
|----|--------------|
| 1 | Test1 Test3 |
| 3 | Test4 Test5 |
[1]: http://sqlfiddle.com/#!6/31311/1
[2]: http://sqlfiddle.com/#!6/31311/1/0
SELECT
dups.id
, oa.TestConcat
FROM (
SELECT ID
FROM MyTable
GROUP BY id
HAVING COUNT(*) > 1
) DUPS
OUTER APPLY (
SELECT STUFF((
SELECT ' ' + TestString
FROM myTable
WHERE ID = DUPS.ID
FOR XML PATH('')
), 1, 1, '')
) OA (TestConcat)
| Value | Value |
|-------|--------|
| Test3 | Test3a |
| Test4 | Test5 |
| id | TestConcat |
|----|---------------------|
| 1 | Test1 Test3 Test3a |
| 3 | Test4 Test5 |
SELECT DISTINCT ID,
(
SELECT ' ' + TestString
FROM myTable
WHERE ID = T.ID
FOR XML PATH('')
) AS TestSTrings
FROM myTable AS T