Hallo,
Um einen Export fertigzustellen, benötige ich Informationen aus mehreren Zeilen zusammengefasst. Es geht um Zuordnungen von Artikeln zu Kategorien.
Ausgangssituation
Ich habe eine Tabelle mit folgenden Spalten:
Ein Item kann natürlich in beliebig vielen Kategorien vorhanden sein. Die SortId ist eine Sortierung, die das Item in der entsprechenden Kategorie hat.
Die Problematik
Ein Item ist in dieser Tabelle nun in genau so vielen Zeilen enthalten, wie er in verschiedenen Kategorien vorkommt.
Für den oben erwähnten Export muß ich nun die CategoryId's und SortId's wie folgt zusammenfassen:
Ich habe das über Pivot versuchen wollen oder über Aggregat-Funktionen, aber bei beiden Varianten müsste ich immer erst wissen, wie viele Datensätze es mit dem Item gibt.
Ich bin geneigt, es in eine Funktion auszulagern, die per Cursor die Datenzeilen zu der ItemId durchläuft und zusammengefasst zurückgibt.
Allerdings sind Cursor nicht gerade mit Performance beseelt, daher hoffe ich auf andere Varianten, auf die ich nicht komme.
Es handelt sich um T-SQL ( MSSQL-Server 2008 ), aber evtl. hilft mir ja auch die Vorgehensweise anderer Datenbanken, das bei mir mit Anpassungen abzubilden.
Danke
Um einen Export fertigzustellen, benötige ich Informationen aus mehreren Zeilen zusammengefasst. Es geht um Zuordnungen von Artikeln zu Kategorien.
Ausgangssituation
Ich habe eine Tabelle mit folgenden Spalten:
Code:
ItemId, CategoryId, SortId
Die Problematik
Ein Item ist in dieser Tabelle nun in genau so vielen Zeilen enthalten, wie er in verschiedenen Kategorien vorkommt.
Für den oben erwähnten Export muß ich nun die CategoryId's und SortId's wie folgt zusammenfassen:
Code:
Beispiel: ItemId foo ist in Kategorie B, F und Y vorhanden und hat entsprechend die Sortierungen 100, 200, 300 Datensätze: foo|B|100 foo|F|200 foo|Y|300 Ergebnis soll sein ( Export-Vorgabe ): B=>100,F=>200,Y=>300 also alles in einem Feld!
Ich bin geneigt, es in eine Funktion auszulagern, die per Cursor die Datenzeilen zu der ItemId durchläuft und zusammengefasst zurückgibt.
Allerdings sind Cursor nicht gerade mit Performance beseelt, daher hoffe ich auf andere Varianten, auf die ich nicht komme.
Es handelt sich um T-SQL ( MSSQL-Server 2008 ), aber evtl. hilft mir ja auch die Vorgehensweise anderer Datenbanken, das bei mir mit Anpassungen abzubilden.
Danke
Kommentar