t-virus
Goto Top

SQL Loesungsvorschlaege gesucht (Joins, pivots, etc...)

Hallo,

da ich nicht so der SQL Profi bin und nur wenig von der Perfekten Ausführung(Performance) verstehe
würde ich auch bitten mir in den folgenden Beispielen etwas auf die Sprünge zu helfen

Also ich möchte im Endeffekt 3(später20) Tabellen Joinen und möglichst doppelte Datensätze vermeiden.
Ich weiß es ist recht viel zu überlegen aber ich hoffe ihr habt Tipps für mich! DANKE!!!
Biber ich zähle auf dich ;)

Ich beschreibe erstmal die Tabellenstruktur

Tasks enthält Projekte die jeweils in Sub und Toptask unterteild sind
plus dem Status und dem Project Manger(Sub/Toptask)
Tabelle - Tasks

ProjectNr.    Level    TaskNr.    TaskStatus    TaskManager   SoNr.   SoTaskNr.
1234          1        5.0        Pre-Fertig    Mr.X          9999    1.1
1234          2        5.1        Fertig        Mr.Y          9999    1.1
4321          1        5.0        Offen         Mr.C          8888    1.2

Stunden gebucht auf Projekt bzw Task.
Tabelle - Stunden

ProjectNr.    TaskNr.    Stunden
1234          5.0        15
1234          5.1        2
1234          5.0        5

Kosten einfach der Verkaufswert plus im welchen Quartal diese bezahlt wurden.
Tabelle - Kosten

SoNr.    SoTaskNr.  Quartal  Kosten 
9999     1.1        Q1       3000€
9999     1.1        Q1       -1000€
9999     1.1        Q2       1000€
8888     1.2        Q2       1500€

Mit Joins schaffe ich es dann diese Ausgabe zu erhalten...
ProjectNr.    Level    TaskNr.    TaskStatus    TaskManager   SoNr.   SoTaskNr. ProjectNr.    TaskNr.    Stunden    Quartal  Kosten 
1234          1        5.0        Pre-Fertig    Mr.X          9999    1.1       1234          5.0        15         Q1       3000€
1234          1        5.0        Pre-Fertig    Mr.X          9999    1.1       1234          5.0        15         Q1       -1000€
1234          1        5.0        Pre-Fertig    Mr.X          9999    1.1       1234          5.0        15         Q2       1000€
1234          1        5.0        Pre-Fertig    Mr.X          9999    1.1       1234          5.0        5          Q1       3000€
1234          1        5.0        Pre-Fertig    Mr.X          9999    1.1       1234          5.0        5          Q1       -1000€
1234          1        5.0        Pre-Fertig    Mr.X          9999    1.1       1234          5.0        5          Q2       1000€     
1234          2        5.1        Fertig        Mr.Y          9999    1.1       1234          5.1        2          Q1       3000€
1234          2        5.1        Fertig        Mr.Y          9999    1.1       1234          5.1        2          Q1       -1000€
1234          2        5.1        Fertig        Mr.Y          9999    1.1       1234          5.1        2          Q2       1000€ 
4321          1        5.0        Offen         Mr.C          8888    1.2       (Null)        (Null)     (Null)     Q2       1500€

Am Ende möchte ich aber auf diese Ausgabe kommen...

ProjectNr.   TaskStatus5.0  TaskStatus5.1  TaskManager1und2    Stunden    Q1     Q2    Q3 
1234         Pre-Fertig     Fertig         Mr.X & Mr.Y         22         2000€  1000€ 
4321         Offen          (Null)         Mr.C                (Null)            1500€

Ich verstehe noch wie ich die Stunden Summiere allerdings nicht wie ich den TaskStatus und das Quartal "Pivote"
Vorallem weil es eine unbestimmte Anzahl an TaskNr und Quartalen gibt...

Frage: Beste Lösung, Performant, Indexing und was ich sonst noch vergessen habe zu beachten

Thanks4Help

LG

Content-ID: 88562

Url: https://administrator.de/contentid/88562

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

Logan000
Logan000 06.06.2008 um 11:17:02 Uhr
Goto Top
Mit reinem SQL wirst du das nicht hinbekommen.
Falls Du einen MS SQL Server einsetzt kannst du dies mit Cursor bzw. einer Stored Proc. erledigen.
Die Performance wird allerdings nicht besondert toll werden.