Ihre Beispieldaten zu lösen, ist nicht im Einklang mit Ihre Beispielausgabe. Dieser Code verwendet Ihre Datenprobe, versuchen Sie dies:
DECLARE @YourTable table (id int, maintitle varchar(10), subtitle varchar(10), imagename varchar(10))
INSERT @YourTable VALUES (1,'ram' ,'raman' ,'abc.jpg')
INSERT @YourTable VALUES (2,'manu' ,'kiran' ,'a2.jpg')
INSERT @YourTable VALUES (2,'manoj' ,'kumar' ,'a3.jpg')
INSERT @YourTable VALUES (2,'chiru' ,'kumar' ,'a4.jpg')
INSERT @YourTable VALUES (3,'anu' ,'anitha','a4.jpg')
INSERT @YourTable VALUES (3,'anupam','aruna' ,'a4.jpg')
;WITH YourTableOrdered AS
(SELECT
*, ROW_NUMBER() OVER (PARTITION BY id ORDER BY id,imagename, maintitle,subtitle) AS RowNumber
FROM @YourTable
)
SELECT
t1.id,t1.maintitle,t1.subtitle,t1.imagename
,t2.imagename AS imagename2
,t3.imagename AS imagename3
FROM YourTableOrdered t1
LEFT OUTER JOIN YourTableOrdered t2 ON t1.id=t2.id and t2.RowNumber=2
LEFT OUTER JOIN YourTableOrdered t3 ON t1.id=t3.id and t3.RowNumber=3
WHERE t1.RowNumber=1
OUTPUT:
id maintitle subtitle imagename imagename2 imagename3
----------- ---------- ---------- ---------- ---------- ----------
1 ram raman abc.jpg NULL NULL
2 manu kiran a2.jpg a3.jpg a4.jpg
3 anu anitha a4.jpg a4.jpg NULL
(3 row(s) affected)
EDIT basierend auf OP Frage bearbeiten viele/unbekannte Anzahl von Dateien pro-ID zu erwähnen.
Sie haben drei Möglichkeiten:
1) Code eine feste Abfrage mit mehr als genug LEFT JOINS
wie:
;WITH YourTableOrdered AS
(SELECT
*, ROW_NUMBER() OVER (PARTITION BY id ORDER BY id,imagename, maintitle,subtitle) AS RowNumber
FROM @YourTable
)
SELECT
t1.id,t1.maintitle,t1.subtitle,t1.imagename
,t2.imagename AS imagename2
,t3.imagename AS imagename3
,t4.imagename AS imagename4
,t5.imagename AS imagename5
,t6.imagename AS imagename6
,t7.imagename AS imagename7
,t8.imagename AS imagename8
FROM YourTableOrdered t1
LEFT OUTER JOIN YourTableOrdered t2 ON t1.id=t2.id and t2.RowNumber=2
LEFT OUTER JOIN YourTableOrdered t3 ON t1.id=t3.id and t3.RowNumber=3
LEFT OUTER JOIN YourTableOrdered t4 ON t1.id=t4.id and t4.RowNumber=4
LEFT OUTER JOIN YourTableOrdered t5 ON t1.id=t5.id and t5.RowNumber=5
LEFT OUTER JOIN YourTableOrdered t6 ON t1.id=t6.id and t6.RowNumber=6
LEFT OUTER JOIN YourTableOrdered t7 ON t1.id=t7.id and t7.RowNumber=7
LEFT OUTER JOIN YourTableOrdered t8 ON t1.id=t8.id and t8.RowNumber=8
WHERE t1.RowNumber=1
2) die maximale Anzahl von Dateien pro einer einzigen ID erhalten und Erstellen Sie dann eine dynamische SQL-Anweisung, die die Anzahl der Joins enthält. Hier können Sie die maximale Anzahl von Dateien erhalten:
DECLARE @MaxFiles int
SELECT
@MaxFiles=MAX(CountOf)
FROM (SELECT
id,COUNT(*) AS CountOf
FROM @YourTable
GROUP BY id
) dt
3) vereinen alle Dateinamen in eine durch Kommata getrennte Liste in einer Spalte, wie:
DECLARE @YourTable table (id int, maintitle varchar(10), subtitle varchar(10), imagename varchar(10))
INSERT @YourTable VALUES (1,'ram' ,'raman' ,'abc.jpg')
INSERT @YourTable VALUES (2,'manu' ,'kiran' ,'a2.jpg')
INSERT @YourTable VALUES (2,'manoj' ,'kumar' ,'a3.jpg')
INSERT @YourTable VALUES (2,'chiru' ,'kumar' ,'a4.jpg')
INSERT @YourTable VALUES (2,'manu' ,'kumar' ,'a5.jpg')
INSERT @YourTable VALUES (2,'manoj' ,'kumar' ,'a6.jpg')
INSERT @YourTable VALUES (2,'chiru' ,'kumar' ,'a7.jpg')
INSERT @YourTable VALUES (3,'anu' ,'anitha','a4.jpg')
INSERT @YourTable VALUES (3,'anupam','aruna' ,'a4.jpg')
;WITH YourTableOrdered AS
(SELECT
*, ROW_NUMBER() OVER (PARTITION BY id ORDER BY id,imagename, maintitle,subtitle) AS RowNumber
FROM @YourTable
)
SELECT
t1.id,t1.maintitle,t1.subtitle
,STUFF(
(SELECT
', ' + t2.imagename
FROM @YourTable t2
WHERE t2.id=t1.id
ORDER BY t2.id,t2.imagename,t2.maintitle,t2.subtitle
FOR XML PATH(''), TYPE
).value('.','varchar(max)')
,1,2, ''
) AS imagenames
FROM YourTableOrdered t1
WHERE t1.RowNumber=1
ORDER BY t1.id
OUTPUT:
id maintitle subtitle imagenames
----------- ---------- ---------- -------------------------------------------------
1 ram raman abc.jpg
2 manu kiran a2.jpg, a3.jpg, a4.jpg, a5.jpg, a6.jpg, a7.jpg
3 anu anitha a4.jpg, a4.jpg
(3 row(s) affected)
Ihre Ausgabe stimmt nicht mit Ihrer Eingabe überein. Woher kommt Part1 in deiner Ausgabe? Warum sollte 3 * anu * und nicht * anupam * sein? Wir könnten diese Dinge erraten, aber es wäre einfacher, es nur zu erwähnen. –