Hallo, ohne eine Hilfstabelle und ohne Unterabfragen wirst du das nicht hinbekommen. Ich habe gestern auch daran gefummelt. Mein Ziel war es, zu einem Datenbanksatz mehrere Bilddateien in eine Zeile zu bekommen.
Nach einigem Hin und Her tricksen habe ich mir erst mal auf dem SQL-Server eine neue Sicht erstellt, in dem die Bilder eine fortlaufende Nummer verpasst bekommen haben. Das wäre in deinem Falle ja das Attribut.
SELECT
ROW_NUMBER() OVER(Partition by INSTANZGUID ORDER BY INSTANZGUID ASC) AS Anzahl_INSTANZGUID,
und dann das Atribut und die Instanzguid und was du sonst noch brauchst.
Anschließend habe ich eine Abfrage von der Tabelle gemacht, die ich benötigte, mir alles geholt was ich brauchte und durch Unterabfragen die Bilder bereitgestellt und geholt.
select
Unterabfrage.RECID as id, '' as Name,'' as Name, Bild1+', '+Bild3+', '+Bild4+', '+Bild5+', '+Bild6 as Atribut
from tb
left join
(select t.RECID, t.LABNAHME, t.mandnr
, case when dok1.Anzahl_Dokumente = 1 and dok1.recid = t.idnr then dok1.DOKLINK else '' end as Bild1
, case when dok2.Anzahl_Dokumente = 2 and dok2.recid = t.idnr then dok2.DOKLINK else '' end as Bild2
, case when dok3.Anzahl_Dokumente = 3 and dok3.recid = t.idnr then dok3.DOKLINK else '' end as Bild3
, case when dok4.Anzahl_Dokumente = 4 and dok4.recid = t.idnr then dok4.DOKLINK else '' end as Bild4
, case when dok4.Anzahl_Dokumente = 5 and dok5.recid = t.idnr then dok5.DOKLINK else '' end as Bild5
, case when dok4.Anzahl_Dokumente = 6 and dok6.recid = t.idnr then dok6.DOKLINK else '' end as Bild6
FROM dbo.tb AS t
inner join EINHEIT e on t.einheitnr = e.EINHEITNR and t.PROJEKTNR = e.PROJEKTNR and e.MANDNR = t.MANDNR
inner join PROJEKT p on t.projektnr = p.projektnr and t.mandnr = p.mandnr and p.PROJEKTNR = e.PROJEKTNR and p.mandnr = e.MANDNR
left join (select * from Tagbdok where Anzahl_Dokumente = 1) dok1 on t.projektnr = dok1.projektnr and t.MANDNR = dok1.MANDNR and dok1.recid = t.IDNR
left join (select * from Tagbdok where Anzahl_Dokumente = 2) dok2 on t.projektnr = dok2.projektnr and t.MANDNR = dok2.MANDNR and dok2.recid = t.IDNR
left join (select * from Tagbdok where Anzahl_Dokumente = 3) dok3 on t.projektnr = dok3.projektnr and t.MANDNR = dok3.MANDNR and dok3.recid = t.IDNR
left join (select * from Tagbdok where Anzahl_Dokumente = 4) dok4 on t.projektnr = dok4.projektnr and t.MANDNR = dok4.MANDNR and dok4.recid = t.IDNR
left join (select * from Tagbdok where Anzahl_Dokumente = 5) dok5 on t.projektnr = dok5.projektnr and t.MANDNR = dok5.MANDNR and dok5.recid = t.IDNR
left join (select * from Tagbdok where Anzahl_Dokumente = 6) dok6 on t.projektnr = dok6.projektnr and t.MANDNR = dok6.MANDNR and dok6.recid = t.IDNR
) as Unterabfrage on
Ich habe meinen Code mal komplett gekürzt und Informationen, wegen Datenschutz rausgenommen. Wenn du dir diesen rein kopierst und alles anpasst, wie deine Informationen heißen, solltest du je Zeile deine Informationen bekommen.
Ich hoffe es hilft dir weiter. Ich habe heute auch eine Anfrage eingestellt, weshalb ich deine überhaupt gesehen habe. Jetzt habe ich die Bild.urls schön in einer Reihe, bekomme diese aber noch nicht in eine Excel-Tabelle eingebettet, die eine Vorlage ist.
Mal schauen, ob ich hilfreiche Info's bekomme.
Gruß Christiane