Jump to content

Daten zusammenlegen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

ich bin recht neu in der Thematik und stehe schon vor mein erstes und wahrscheinlich auch nicht letztes Problem. :confused:

 

Folgender Sachverhalt steht an:

In einer Tabelle gibt es ausser der ID Spalte noch eine ConfigID Spalte und eine Value Spalte.

Anhand der ConfigID werden in dieser Tabelle der Wert der Spalte Value immer aktualisiert (Update).

Die Tabelle besteht aus ca. 30 Einträge, also 30 ConfigID und 30 Value Werte.

 

Wo mein Problem liegt ist, das ich drei Value Werte aus der Tabelle brauche, die natürlich drei verschiede ConfigID
haben und ich sie nicht untereinander haben muss sondern ich müsste die drei Werte in drei verschieden Spalten ausgegeben bekommen. :schreck: :schreck: :schreck:

 

Beispiel:

 

Original Tabelle:

ID        ConfigID       Value

1           54                2340

2           56                23

3           34                128

 

Das Ergebnis der Abfrage sollte ungefähr so aussehen:

 

ID        Value1       Value2      Value3

1          2340            23           128

 

Ich hoffe ich konnte das so weit verständlich erklären.

 

Ich schon einige Abfragen Versucht, selbst über eine Prozedur. Aber dafür reicht mein wissen noch nicht um die Abfrage korrekt um zu setzten.

 

Vielleicht kann mir jemand von euch weiterhelfen.

 

Danke für eure Mühe schonmal im voraus.

 

Freudliche Grüße

Jess

 

Link zu diesem Kommentar

Moin,

 

so ohne Weiteres geht das auch nicht.

 

Um evtl. einen Lösungsansatz entwickeln zu können, müsstest du genauer beschreiben, was das Ganze soll und wie die Daten beschaffen sind.

  • Geht es nur um exakt drei Werte? Oder sollen immer drei Zeilen der Tabelle zusammegefasst werden, über die ganze Tabelle hinweg?
  • Wie hängen die Daten zusammen, die in einer Zeile auftauchen sollen? Wie lassen sie sich identifizieren?
  • Ist das einmalig? Brauchst du das häufiger?
  • Verändern sich die Werte der Tabelle? Oder bleiben sie gleich, und es kommen neue hinzu?
  • Worin besteht die Anforderung, die Daten auf diese Weise darzustellen? Was ist das Ziel dahinter?
  • ...

Gruß, Nils

bearbeitet von NilsK
Link zu diesem Kommentar

Moin,

 

also die Daten bestehen nur aus INT Werten. Keine VARCHAR oder ähnlichen.

Die Value Werte sind einmal der Statuswert,die Temperatur und der Füllstand eines Tank.

Diese Werte werden immer bei änderungen eines der Werte geschrieben (Update). Jeder für sich.

 

Die Daten werden über eine Stored Procedure in die Tabelle geschrieben. Immer dann wenn sich die Daten ändern.

 

Solange kein neuer Tank angeschaffen wird, wird sich die Tabelle auch nicht erweitern.

ICh bräuchte die Daten in den neuen Format um den Reportbericht der jeden Tag gemacht werdne soll, den Tankstand,Temperatur und Status behinhaltet.

Die ConfigID Spalte ist eindeutig. Es gibt eine Beziehung zu einer anderen Tabelle wo dadurch der Name des Tank und der aktuelle Status in Textform aufgelöst wird,anhand des Wert aus dieser Tabelle.

 

Hm. Wenn ein Experte schon sagt das so etwas nicht so einfach geht, denke ich das ich es wohl kaum eine Lösung für das Problem gibt.

Kann man nicht so eine Art "Virtuelle Tabelle" anlegen wo man alle Daten erst zusammen trägt und diese dann ausgibt oder so? Oder wie in der "nnormalen" Programmierung die Daten über ein Array sammelt?

Wie gesagt, da ich noch nicht lange dabei bin, fällt es mir schwer die Daten für das gewünschte Ziel zusammen zu fassen.

 

Gruß

Jess

Link zu diesem Kommentar

Moin,

 

oh, eine Lösung gibt es auf jeden Fall. Ist nur die Frage wie. Und dazu benötigt man eben Informationen über die Daten.

 

Gibt es denn in deiner Wertetabelle eine Spalte, aus der hervorgeht, wie die Werte zusammengehören? Du erwähnst ja eine Art ID für den Tank, da würde ich vermuten, dass die Wertetabelle jeweils drei Einträge mit derselben Tank-ID enthält. Denkbar wäre auch, dass bekannt ist, dass die Config-IDs 54, 56 und 34 immer zusammengehören. Oder wie ist das genau aufgebaut?

 

Wenn man das weiß, kann man den Ansatz entwickeln. Möglicherweise würde man eine temporäre Tabelle erzeugen, wie Dukel es vorschlägt. Oder man baut eine Stored Procedure. Oder ...

 

Gruß, Nils

Link zu diesem Kommentar

Moin,

 

Nein, es gibt in der Tabelle keine Spalte wo hervorgeht das die Werte zusammengehören. Die Tank ID ist Automatisch vortlaufend (IDENTITY(1,1)), und wir bei jeden Neuen Eintrag um Eins erhöht.

Also solange keine neuer Tank hinzukommt wird auch die ID nicht herhöht. Denn die Value Werte der ConigID's werden über den UPDATE Befehl aktualisiert.

Im Prinzip kann man sagen das die drei Config-ID's 54,56 und 34 immer zusammen gehören. Denn hinter diesen ConfigID stehen die Value Werte vom Fuellstand,Temperatur udn Status eines Bestimmten Tank.

 

Original Tabelle:

ID        ConfigID       Value

1           54                2340   => Fuellstand Tank 1

2           56                23      => Temperatur Tank 1

3           34                128   =>  Status des Tank 1

4           48                1234 => Fuellstand Tank 2

5           78                10     => Temperatur Tank 2

6           51                 64   => Status Tank 2

 

So ist die Tabelle aufgebaut wie sie mir vorliegt. Wie gesagt. Die Daten werden nur über den Update Befehl aktualisiert mit dem Filter der ConfigID.

Wenn jetzt noch ein Tank 3 dazukommen würde, würde die ID von 7-9 gehen. Die ConfigID wird Manuel vergeben und die Value Werte würden dann über Update und den Filter der ConfigID aktualisiert.

 

Gruß, Jess

Link zu diesem Kommentar

Moin,

 

gut, dann wäre noch zu klären, was deine Verarbeitung leisten soll. Benötigst du die Zusammenfassung zu bestimmten Zeitpunkten quasi als manuellen Report? Oder soll sie fortlaufend ad hoc abfragbar sein?

 

Eine einfache Möglichkeit für deinen Fall wäre (als Pseudocode):

 

  • Erzeuge eine temporäre Tabelle mit den Spalten TankNr, Fuellstand, Temperatur, Status
  • Schreibe in Zeile 1 den Wert 1, den Value-Wert zur ID 1, den Value zu ID 2, den Value zu ID 3
  • Schreibe in Zeile 2 den Wert 2, den Value-Wert zur ID 4, den Value zu ID 5, den Value zu ID 6
  • Gib die temporäre Tabelle aus

Gruß, Nils

Link zu diesem Kommentar

Moin,

 

ja, die Abfrage soll als Report benutz werden. Dieser Report wird nur nicht Manuell angestoßen sondern wird über "Report Scheduling" automatisch ein mal am Tag (23:59 Uhr) erzeugt und an der angegebenden EMail Adresse gesendet.

 

OK. Den Pseudocode habe ich verstanden wie die Logik ablaufen könnte. Wie setze ich das in SQl Sprache um?

Muss eine Stored Prozedure erzeugt werden ? Und wie oder womit kann ich die Tabelle füllen, mit INSERT ?

 

Kann dir erlich gesagt gerade nicht ganz folgen wo ich ansetzen muss! Muss mir nicht sofort den fertigen Code geben, das macht kein Sinn weil ich es ja lernen und verstehen möchte, aber ein kleiner Denkanstoss
in die richtige Richtung wie man so etwas angeht wäre sehr hilfreich.

So könnte ich eventuell andere Probleme von einer anderen Seite angehen um sie zu lösen und das eventuell mit weniger hilfe.

 

Gruß,

Jess

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...