Veröffentlicht 27. März 200817 j Hallo Forum, ich habe folgendes Problem: Ich habe Kundendaten in denen steht in einem Feld eine Anzahl wie oft etwas verschickt werden soll. Solange die Zahl 1 da steht soll die Adresse nur einmal angezeigt werden. Wenn aber die Zahl 2 da steht soll die Adresse zweimal untereinander angezeigt werden. Ich habe keine Idee, wie ich das mit einem SELECT-Statement hinbekommen könnte, hat jemand von euch eine Idee? Beste Grüße aus Gießen Patrick
27. März 200817 j 2 Vorschläge: 1. Benutz ein rekursives SQL 2. Wenn du den Wertebereich von Anzahl sehr sicher einschränken kannst: SELECT * FROM a WHERE anzahl>0 UNION SELECT * FROM a WHERE anzahl>1 UNION SELECT * FROM a WHERE anzahl>2 usw. wobei die 1. Lösung solider ist, auch wenn es etwas Einarbeitung kostet
28. März 200817 j Hier ist ein SQL das ungefähr das macht was du suchst. Ersetze Stufe durch Anzahl und bau deine benötigten Felder ein. In Daten werden einfach nur 3 Testsätze erzeugt (gibt es in db2 eine spezielle Tabelle für so was?) WITH daten(id, werte, stufe) AS (SELECT DISTINCT 1, 111, 4 FROM sysibm.views UNION SELECT DISTINCT 2, 222, 1 FROM sysibm.views UNION SELECT DISTINCT 3, 333, 2 FROM sysibm.views) , rek (id, werte, stufe) AS ( SELECT daten.id , daten.werte , daten.stufe FROM daten UNION ALL SELECT kind.id , kind.werte , vater.stufe-1 FROM rek vater , daten kind WHERE vater.id=kind.id AND vater.stufe>1 ) SELECT id, werte FROM rek
28. März 200817 j Autor Hallo, danke für Deine Hilfe. Ich habe es mit UNION ALL gelöst. Klappt Super. Beste Grüße aus Gießen Patrick
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.