Daten aus Spaltenfelder korrekt auslesen

digor

Benutzer
Beiträge
8
Hallo zusammen,

eine Datenbanktabelle ist so angelegt, dass die PosNr. in der ersten 4 Spalten sind. Die nächsten 4 Spalten haben die Mengen für die davor erwähnten Positionen. Die weiteren 5 Spalten haben die Artikelnummern. Ich möchte die Daten aus diesen Blöcken so auslesen, dass ich die Menge pro Artikel habe. Im Anhang ist ein Bild hierzu. Ich könnte es mit UNION zusammen bringen. Nun sind es in der Tat keine 4 sondern hunderte Spalten. Gebe es bestimmt eine andere Möglichkeit, es zu lösen?
Vielen herzlichen Dank für Eure Unterstützung!
 

Anhänge

Werbung:
Danke für schnelle Rückmeldung! Der Meinung bin ich auch. Die Tabelle ist leider eine Gegebenheit. Ich melde mich morgen hier mit einer besseren Aufstellung zu meinen Ansinnen.
 
Der Meinung bin ich auch.
ich ebenso

Vermutlich wird es eine Union Abfrage oder eine Unpivot Abfrage.
Hab kurz geschaut, bei mysql wäre es dann vielleicht cross join lateral (mit Union oder Values clause)

Im Prinzip / oldschool ist es ein Union denke ich und wenn es um schiere Masse von Spalten geht, also Fleißarbeit und Fehleranfälligkeit, würde man dann ein Statement, was diese bestehende Präsentation (weiß nicht, ob es wirklich eine ernstgemeinte Tabelle sein soll) wieder in normalisierte Form bringt wohl irgendwie per Abfrage generieren aus den Spaltennamen im Dictionary.
 
Noch einmal Danke an akretschmer und dabadepdu !
Unten sind meine Ansinnen zur Abfrage
Mit UNION kann ich es lösen. In der Tat Fleißarbeit bei hunderten Spalten

1738223865375.webp
 
Unten sind meine Ansinnen zur Abfrage
Etwas ungewöhnliche Darstellung der Abfrage, aber nun, im Prinzip kann man glaub ich nicht viel mehr dazu sagen.
Wahrscheinlich reicht es auch, wenn ein armer Tropf sich an die Dekonstruktion dieser Tabelle gibt.
Ein Spreadsheet, die Feldnamen, ein paar Formeln, ... das wird schon.
Falls nicht, müsstest Du Dich mit Details zurückmelden.

Noch eine Anmerkung: Wenn Du das auseinander nimmst, solltest Du vielleicht weniger an Deinen akuten Bedarf, als eine vollständige Rückführung der Daten in eine normalisierte Form denken und das dann erzielen. Also ein schicker View, der das alles richtig transformiert. Von dort aus, kann man dann alles wie gewohnt abfragen, ohne immer wieder etwas anders diese sagen wir mal Reporttabelle anzufassen und auseinander zu nehmen.
P.S.: Wenn Du den View fertig hast, kannst du die Daten im 2. Schritt wieder pivotisieren und das Ergebnis muss dann mit den Ausgangsdaten übereinstimmen :).
 
Zwei Dinge in deinen Posts machen mich etwas stutzig:
Ich könnte es mit UNION zusammen bringen. Nun sind es in der Tat keine 4 sondern hunderte Spalten.
Sind es wirklich hunderte Spalten oder hunderte Datensätze mit je 4 Spalten PosNr + 4 Spalten Menge + weitere Spalten, die sich auf diese Datensätze beiziehen, also effektiv bis zu 4 Datensätze in einer Spalte. In dem Fall wäre UNION natürlich der einfachste Weg, so wie du das bereits gezeigt hast.

Solche kaputten Designs gibt es natürlich, eins mit wirklich "hunderten" Spalten habe ich so noch nicht gesehen, das wäre heftig.

Außerdem:
Ist das wirklich der einzige Ort, wo diese Daten stehen? Ist das nicht vielleicht eine Kopie (für ein Auswertungsbestand) oder sogar nur eine View auf die eigentlichen Daten? Sowas habe ich nämlich in der Tat schon sehr oft gesehen.
 
Ist das wirklich der einzige Ort, wo diese Daten stehen?
Das ist eine gute Frage! Man kommt ggf. an die Quelle, aber der TE sprach ja davon dass es eine "Gegebenheit" sei.


Solche kaputten Designs gibt es natürlich, eins mit wirklich "hunderten" Spalten habe ich so noch nicht gesehen,
Naja, ich denke es ist einfach das Ergebnis einer Pivotoperation, ob jetzt als Report oder als Snapshot / Exporttabelle... es gibt sicher millionenfach.
Nur anhand dieser Daten weitere DV zu machen ist halt ungewöhnlich.
 
Das ist eine gute Frage! Man kommt ggf. an die Quelle, aber der TE sprach ja davon dass es eine "Gegebenheit" sei.
Ja, die Quelle könnte mitunter in der selben DB liegen, dennoch könnten die Daten nur ein "aufbereiteter" Bestand der selben Software-Lösung sein. Ich habe das in unserer Zeiterfassung teilweise auch zusätzlich in Pivot-Form, nur das die Daten auch in normalisierten Tabellen auffindbar sind. Die Tabellenbezeichnungen sind dabei nicht zwingend selbst erklärend, vielleicht lohnt es sich einfach, nochmal weiter nach anderen Tabellen mit den selben Daten zu schauen. Das erscheint mir vor allem dann wahrscheinlich, wenn es wirklich 100te Spalten sind, so kann ja keiner arbeiten ;-)
 
Werbung:
Zwei Dinge in deinen Posts machen mich etwas stutzig:

Sind es wirklich hunderte Spalten oder hunderte Datensätze mit je 4 Spalten PosNr + 4 Spalten Menge + weitere Spalten, die sich auf diese Datensätze beiziehen, also effektiv bis zu 4 Datensätze in einer Spalte. In dem Fall wäre UNION natürlich der einfachste Weg, so wie du das bereits gezeigt hast.

Solche kaputten Designs gibt es natürlich, eins mit wirklich "hunderten" Spalten habe ich so noch nicht gesehen, das wäre heftig.

Außerdem:
Ist das wirklich der einzige Ort, wo diese Daten stehen? Ist das nicht vielleicht eine Kopie (für ein Auswertungsbestand) oder sogar nur eine View auf die eigentlichen Daten? Sowas habe ich nämlich in der Tat schon sehr oft gesehen.
Tja, die Tabelle ist wirklich ungewöhnlich. Sie ist nicht von mir, ich kann daran nichts ändern. Man muss es sich so vorstellen, dass die Tabelle neben ersten "normalen" Spalten viele weitere Spalten hat, die mit drei "Bereichen" benennen kann. Inhaltlich sind drin: Bereich 1: Positionsnummer, Bereich 2: Menge, Bereich 3: Artikelnummer. Jeder Bereich hat 100 Spalten. Die 1. Spalte im 1. Bereich korrespondiert mit der 1. Spalte im 2. Bereich und mit der 1. Spalte im 3. Bereich. Danach geht es weiter mit der 2.Spalte aus dem 1.Bereich, die mit den 2. Spalten aus den Bereichen 2 und 3 korrespondiert. Usw.
Ich denke, dass ich mit der Konsolidierung mit UNION starte. Was soll's, es sind nur 100 Unions.

Für Eure Unterstützung trotzdem herzlichen Dank!
 
Zurück
Oben