Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Text Daten von Vertikal in Horizontal bringen (alles in einen Zeile) (https://www.delphipraxis.net/202127-text-daten-von-vertikal-horizontal-bringen-alles-einen-zeile.html)

Dumpfbacke 1. Okt 2019 08:20

Datenbank: Firebird • Version: V2.5 • Zugriff über: IBX

Text Daten von Vertikal in Horizontal bringen (alles in einen Zeile)
 
Hallo Leute,
ich möchte gerne die Daten welche in einer Tabelle untereinander stehen nebeneinander bekommen. Mit Beträgen ist das ja kein Problem (SUM) aber wie mache ich das mit Text ?

Beispiel

Tabelle1

Delphi-Quellcode:
Standort, Regal, Artikeltext
Raum_1,       1,     Artikel 1
Raum_1,       2,     Artikel 2
Raum_1,       3,
Raum_1,       4,     Artikel 4
In Raum_1 Regal 3 ist nicht drin.

Dann dachte ich mir es sollte so funktionieren

Delphi-Quellcode:
Select Standort,Regal,
iif (Regal = '1', Artikeltext,NULL) as Regal_1,
iif (Regal = '2', Artikeltext,NULL) as Regal_2,
iif (Regal = '3', Artikeltext,NULL) as Regal_3,
iif (Regal = '4', Artikeltext,NULL) as Regal_4,
From ArtikelDaten
Where Artikeltext <> '' and Artikeltext is not NULL
Groub by Standort,Regal
Also Ergbis hätte ich dann gerne
Raum1,Artikel 1,Artikel 2,,Artikel 4

Leider kommt das hier raus
Raum1,Artikel1,NULL,NULL,NULL
Raum1,NULL,Artikel2,NULL,NULL
Raum1,NULL,NULL,NULL,Artiek4

Nun die große Frage : "Wie bekomme ich alles in einen Zeile ?

Tanja

mkinzler 1. Okt 2019 08:28

AW: Text Daten von Vertikal in Horizontal bringen (alles in einen Zeile)
 
Nennt sich Pivot. Du musst die Daten natürlich "aggregieren":

SQL-Code:
Select  
  Standort,Regal,
  MIN(iif (Regal = '1', Artikeltext,NULL)) as Regal_1,
  MIN(iif (Regal = '2', Artikeltext,NULL)) as Regal_2,
  MINiif (Regal = '3', Artikeltext,NULL)) as Regal_3,
  MIN(iif (Regal = '4', Artikeltext,NULL)) as Regal_4,
From
  ArtikelDaten
Where
  Artikeltext <> '' and Artikeltext is not NULL
Group by
  Standort,Regal

Dumpfbacke 1. Okt 2019 09:05

AW: Text Daten von Vertikal in Horizontal bringen (alles in einen Zeile)
 
Danke das war aber einfach :oops: Tanja

jobo 1. Okt 2019 09:18

AW: Text Daten von Vertikal in Horizontal bringen (alles in einen Zeile)
 
Das Statement ist wirklich nicht schwierig, wenn man es einmal gesehen hat. Eher unhandlich bei mehreren Spalten. Schwer ist es eher für den Server, der bei großen Datenmengen dann gut zu kauen hat.
Vielleicht kommt das ja in der Version 4 von Firebird als echte, optimierte Pivotfunktion?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz