![]() |
SQL-Programmierproblem
Hallo zusammen,
ich verzweifle an einem SQL-Script. Ich möchte aus mehreren Tabellen die Werte für jeweils einen Kunden in einer Zeile zusammenfassen. Der Kunde hat zwei Kundennummern. Eine endet auf 9, die andere auf 0. Abhängig von der Kundennummer sollen die Werte bei 0 in Spalte 1-3 oder bei 9 in Spalte 4-6 angezeigt werden. Hier ist das Skrpit was ich bis jetzt zusammengebracht habe:
SQL-Code:
Ich bekomme jedoch immer noch zwei Einträge pro Kunde.
select ' ',' ',' ',
to_char(sum(decode (ldtu.ltut_ref, 1001,1,0))), to_char(sum(decode (ldtu.ltut_ref, 1007,1,0))), to_char(sum(decode (ldtu.ltut_ref, 1024,1,0))), substr(ldtu2.lcu_ident,4,4), lcust.lcu_name1, lcust.lcu_zipcode, lcust.lcu_city from abl_user.ldespatch_tu ldtu, abl_user.ldespatch_tu ldtu2, abl_user.lcust lcust, abl_user.lroute lrou where ldtu.lrou_ref= lrou.lrou_ref and ldtu.ldtu_ref = ldtu2.ldtu_ref and substr(lcust.lcu_ident,-1)='0' and ldtu2.lcu_ident = lcust.lcu_ident and to_char(lrou.lrou_departdate,'dd.mm.yyyy') = '04.08.2003' and lrou.ldz_ident = '220' group by substr(ldtu2.lcu_ident,4,4),lcust.lcu_name1,lcust.lcu_zipcode,lcust.lcu_city Union select to_char(sum(decode (ldtu.ltut_ref, 1001,1,0))), to_char(sum(decode (ldtu.ltut_ref, 1007,1,0))), to_char(sum(decode (ldtu.ltut_ref, 1024,1,0))), ' ',' ',' ', substr(ldtu2.lcu_ident,4,4), lcust.lcu_name1, lcust.lcu_zipcode, lcust.lcu_city from abl_user.ldespatch_tu ldtu, abl_user.ldespatch_tu ldtu2, abl_user.lcust lcust, abl_user.lroute lrou where ldtu.lrou_ref= lrou.lrou_ref and ldtu.ldtu_ref = ldtu2.ldtu_ref and substr(lcust.lcu_ident,-1)='9' and ldtu2.lcu_ident = lcust.lcu_ident and to_char(lrou.lrou_departdate,'dd.mm.yyyy') = '04.08.2003' and lrou.ldz_ident = '220' group by substr(ldtu2.lcu_ident,4,4),lcust.lcu_name1,lcust.lcu_zipcode,lcust.lcu_city order by 4 Hat jemand eine Idee? |
Re: SQL-Programmierproblem
Hallo JesterX
Der SQL-Befehl UNION fügt keine Datensätze zusammen! Er dient nur dazu, Daten von mehreren Tabellen in einem Resultset zurück zu geben. Er unterdrückt jedoch doppelte Datensätze, welche genau gleich sind (alle Felder haben den gleichen Inhalt), ausser es wird mit UNION ALL gearbeitet. Es gibt eigentlich nur zwei Möglichkeiten, Dein Problem auf SQL-Basis zu lösen. 1. Du arbeitest mit Temporär-Tabellen, wenn dass Dein DB-Server unterstützt. 2. Du arbeitest ohne UNION z.B.:
Code:
Falls in einer der Tabellen kein Datensatz vorhanden sein muss, musst Du das WHERE noch erweitern (z.B. OR bb.Id IS NULL) und bei dem Ausgabe-Feld Id mit CASE arbeiten!
SELECT aa.Id,
Feld11 = SUM(aa.Feld1), Feld12 = SUM(aa.Feld2), Feld21 = SUM(bb.Feld1), Feld22 = SUM(bb.Feld2) FROM Tab1 aa, Tab2 bb WHERE SUBSTR(aa.id,-1) = SUBSTR(bb.id,-1) GROUP BY aa.Id Gruss Xaver |
Re: SQL-Programmierproblem
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Xaver,
ich habe mal einen Screenshot vom Ergebnis erstellt. Hier noch mal mein Problem: Ich habe eine Tabelle mit Kundenstammdaten. Ich habe eine große Tabelle mit Bewegungsdaten. Diese sind über eine RefNr miteinander verknüpft. Da ich aber für jeden Kunden mehrere Kundennummern habe, möchte ich nun die Daten der Kundennummer die auf 0 endet in den ersten drei Spalten anzeigen und die der Kundennummer die auf 9 endet in den nächsten dreien. Im Beispiel ist die siebte Spalte die KdNr. Gruss Holger |
Re: SQL-Programmierproblem
Hallo Holger
Es ist nicht ganz einfach ein Beispiel zusammen zu stellen, wenn man die Datenstrukturen nicht kennt. Grundsätzlich ist es aber so, dass Du nur zu einem Ergebnis von einem Datensatz/Kunde kommst, wenn alles in einem Select abgehandelt wird. Der Screen-Shut sieht für mich nach einem Problem in GROUP aus. Schick deshalb das SQL-Statement, mit welchem das Resultset vom Screen-Shut erzeugt wurde. Wenn Du willst, kannst Du mir auch einen Auszug der Daten senden (z.B. als Paradox- oder Excel-Tabellen) damit ich das Statement auf meinem MSSQL-Server austesten kann. So könnte ich Dir genau sagen, wie das Statement auszusehen hat. Gruss Xaver |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz