Ich habe ja noch nicht mal eine Idee, was genau du machen willst. Du hast keine Frage gestellt ;-)
Hab da wieder mal ne Frage :-)
Ich habe eine Tabelle in der Zeiten pro Projekt gespeichert sind. Nun gibt es bei den Projektnummern
gewisse Gruppen, gekennzeichnet durch gewisse Ziffern o.ä., z.B.:
Gruppe allg: gekennzeichnet durch die 0 an 2.3. und 4.Stelle:
6000A1
6000B4
Prozessnumemr geklennzeichnet durch das P an 2. Stelle:
6P01E5
6P03ZZ
Management gekennzeichnet durch das M auf der zweiten Stelle:
6M0001
Hauptprojekte gekennzeichet durch Zahlen auf der 2., 3. und 4. Stelle (aber nicht 000)
6123A1
6244B5
Z-Projekte gekennzeichnet durch ein Z auf der 2. Stelle:
6Z0125
6Z02EE
...
Hab grade keine Ahnung ob das durch einen SQL zu machen ist.
Kann mir einer von euch weiter helfen.
Danke schon mal
Gruß
Andreas
Ich habe ja noch nicht mal eine Idee, was genau du machen willst. Du hast keine Frage gestellt ;-)
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Ich weiß zwar nicht, was Du machen willst, aber es geht bestimmt!!!1elf.
Laut Glaskugel vielleicht aber sowas hier:
AndreasCode:test=*# select * from projekte ; id | wert --------+------ 1a0001 | 10 1a0002 | 20 2b0003 | 11 (3 rows) test=*# select substring(id,2,1), sum(wert) from projekte group by 1; substring | sum -----------+----- b | 11 a | 30 (2 rows)
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
hmm lass mal sehen,
ich kann das leider nicht so schön darstellen wie ihr, aber im Grunde will ich folgendes:
Tabellen Inhalt
Priojekt: Stunden:
6000A1 12
6000B4 10
6P01E5 3
6P03ZZ 5
6M0001 2,5
6123A1 3
6244B5 5
6Z0125 4
6Z02EE 3
Jetzt hätt ich gern als Output die Summe der Stunden auf "Projektart", also:
6000 22 --> Gruppierung auf Projekte die mit 6000 anfangen
6P 8 --> Gruppierung auf Projekte die mit 6P beginnen
6M 2,5 --> Gruppierung auf Projekte die mit 6M beginnen
6zzz 8 --> Gruppierung auf Projekte die mit 6 beginnen gefolgt von 3 Zahlen
6Z 7 --> Gruppierung auf Projekte die mit 6Z beginnen
Ich weiß nicht wie ich mich anders ausdrücken soll :-)
Geht sowas überhaupt über SQL??
Ist es einigermasen klar?
Danke
Gruß
Andreas
Das geht mit code-Tags, also eckige Klammer auf, code, Klammer zu. Beenden mit Klammer auf, \, code, Klammer zu.
Ja. Deine Gruppe "6000" beginnt mit 6, gefolgt von 3 Ziffern. Das gilt auch für Deine Gruppe 6zzz (laut Beschreibung). Ansonsten mal dieser Ansatz:Tabellen Inhalt
Priojekt: Stunden:
6000A1 12
6000B4 10
6P01E5 3
6P03ZZ 5
6M0001 2,5
6123A1 3
6244B5 5
6Z0125 4
6Z02EE 3
Jetzt hätt ich gern als Output die Summe der Stunden auf "Projektart", also:
6000 22 --> Gruppierung auf Projekte die mit 6000 anfangen
6P 8 --> Gruppierung auf Projekte die mit 6P beginnen
6M 2,5 --> Gruppierung auf Projekte die mit 6M beginnen
6zzz 8 --> Gruppierung auf Projekte die mit 6 beginnen gefolgt von 3 Zahlen
6Z 7 --> Gruppierung auf Projekte die mit 6Z beginnen
Ich weiß nicht wie ich mich anders ausdrücken soll :-)
Geht sowas überhaupt über SQL??
Ist es einigermasen klar?
Danke
Gruß mal ein
Andreas
Andere Lösung: einzelne Selects, diese durch UNION zusammenkleben, fertig.Code:test=*# select * from projekte ; id | wert --------+------ 6000A1 | 12 6000B4 | 10 6P01E5 | 3 6P03ZZ | 5 6M0001 | 2 6123A1 | 3 6244B5 | 5 6Z0125 | 4 6Z02EE | 3 (9 rows) test=*# select sum(case when id ~ '^6000' then wert else 0 end) as "6000", sum(case when id ~'^6p' then wert else 0 end) as "6P", sum(case when id~'^6Z' then wert else 0 end) as "6Z" from projekte ; 6000 | 6P | 6Z ------+----+---- 22 | 0 | 7 (1 row)
Wegens massiver faulheit hab ich das mal nur für 2-3 Guppen gemacht...Code:test=*# select '6000' as gruppe, sum(wert) from projekte where id ~'6000' group by 1 union select '6P', sum(wert) from projekte where id ~'^6P' group by 1; gruppe | sum --------+----- 6000 | 22 6P | 8 (2 rows)
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
wow, bin beeindruckt, komm heut leider nicht mehr zum testen.
Melde aber morgen gleich das Ergebnis :-)
Danke schon mal
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Danke Andreas für die Antwort,
habe es versucht und es klappt echt schon super, bis auf den einen Fall:
es gibt Projekte die beginnen mit 6000 und andere die mit 6 gefolgt von drei Zahlen, die kleinste also 6001
Also bräucht ich für zum Beispiel:
ouput sollte dann sowas sein:Code:6000A0 12 6000BD 5 6124A0 4 6244B3 3 600054 2
hast du mir hierfür vielleicht noch ne Lösung? Kann man in SQL vielleicht reguläre Ausdrücke anweden oder so?Code:6000 19 6xxx 7
Wäre echt super.
Danke schon mal
Gruß
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Hab die Doku gelesen, fündig wurd ich aber über RegEx.
Die Lösung schaut so aus:
sum(case when pgt_tbl_tprj.tpr_pze !~ '^6000' and pgt_tbl_tprj.tpr_pze ~ '^6[0-9][0-9][0-9]' then pgt_tbl_buchung.bng_zeit else 0 end)
Danke nochmal :-)
Gruß
Andreas
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen