Hallo zusammen, ich möchte eine Abfrage machen bei der ich verdammich nicht weiter komme.
Aus einer Tabelle mit Datum und eingepflegte Position möchte ich die Personen rausziehen, die bestimmte Positionen innehaben. Zum Beispiel:
Tabelle Einsatz
Ich ziehe hier die Leute für den Tag raus, die in der Dönerbude oder im Pommesstand arbeiten.
Nun möchte ich aus einer weiteren Tabelle die Skilllevel dieser Personen rausziehen und mir mögliche Kombinationen anschauen. Die andere Tabelle sieht dann zB wie folgt aus:
Tabelle Skill
Jetzt habe ich zum Beispiel folgenden Code:
SELECT DISTINCT
SUM(Case when (Skl.Fähigkeit = 'Döner and Skl.Level > 2) and (Skl.Fähigkeit = 'Pommes' and Skl.Level <= 2) and (Skl.Fähigkeit = 'Schnitzel' and Skl.Level <= 2) Then 1 Else 0 End) as Döner
SUM(Case when (Skl.Fähigkeit = 'Döner and Skl.Level > 2) and (Skl.Fähigkeit = 'Pommes' and Skl.Level > 2) and (Skl.Fähigkeit = 'Schnitzel' and Skl.Level <= 2)Then 1 Else 0 End) as Döner/Pommes
SUM(Case when (Skl.Fähigkeit = 'Döner and Skl.Level > 2) and (Skl.Fähigkeit = 'Pommes' and Skl.Level <= 2) and (Skl.Fähigkeit = 'Schnitzel' and Skl.Level > 2) Then 1 Else 0 End) as Döner/Schnitzel
SUM(Case when (Skl.Fähigkeit = 'Döner and Skl.Level <= 2) and (Skl.Fähigkeit = 'Pommes' and Skl.Level > 2) and (Skl.Fähigkeit = 'Schnitzel' and Skl.Level > 2) Then 1 Else 0 End) as Pommes/Schnitzel
SUM(Case when (Skl.Fähigkeit = 'Döner and Skl.Level > 2) and (Skl.Fähigkeit = 'Pommes' and Skl.Level > 2) and (Skl.Fähigkeit = 'Schnitzel' and Skl.Level > 2) Then 1 Else 0 End) as Döner/Pommes/Schnitzel
FROM Einsatz as Eins
LEFT JOIN Skill as Skl ON Eins.Name = Skl.Name
WHERE Eins.Position LIKE 'Dönerbude' OR Eins.Position LIKE 'Pommesstand'
Ziel wäre dann eine Tabelle zu haben, die so aussieht
Hier wurden jeztt nur Jürgen und Hans berücksichtigt und ihre Skills nach den folgenden Kombinationen geschaut.
Funktioniert aber nicht. Ich vermute, dass es an der Case when liegt, die keine mehrere Zeilen anschauen kann und als AND kombinieren kann. Anderes Problem ist natürlich auch, dass meine richtige Tabelle viel größer ist und aus viel mehr Positionenen und Fähigkeiten besteht.
Ich müsste das iwie dynamisch gestalten, wofür mir das Know-How fehlt.
Hat jemand eine einfache Idee?
Aus einer Tabelle mit Datum und eingepflegte Position möchte ich die Personen rausziehen, die bestimmte Positionen innehaben. Zum Beispiel:
Tabelle Einsatz
Name | Position |
Hans | Dönerbude |
Jürgen | Pommesstand |
Walter | Schnitzelbar |
Ich ziehe hier die Leute für den Tag raus, die in der Dönerbude oder im Pommesstand arbeiten.
Nun möchte ich aus einer weiteren Tabelle die Skilllevel dieser Personen rausziehen und mir mögliche Kombinationen anschauen. Die andere Tabelle sieht dann zB wie folgt aus:
Tabelle Skill
Name | Fähigkeit | Level |
Hans | Döner | 3 |
Hans | Pommes | 4 |
Hans | Schnitzel | 2 |
Jürgen | Döner | 2 |
Jürgen | Pommes | 5 |
Jürgen | Schnitzel | 4 |
Walter | Schnitzel | 3 |
Jetzt habe ich zum Beispiel folgenden Code:
SELECT DISTINCT
SUM(Case when (Skl.Fähigkeit = 'Döner and Skl.Level > 2) and (Skl.Fähigkeit = 'Pommes' and Skl.Level <= 2) and (Skl.Fähigkeit = 'Schnitzel' and Skl.Level <= 2) Then 1 Else 0 End) as Döner
SUM(Case when (Skl.Fähigkeit = 'Döner and Skl.Level > 2) and (Skl.Fähigkeit = 'Pommes' and Skl.Level > 2) and (Skl.Fähigkeit = 'Schnitzel' and Skl.Level <= 2)Then 1 Else 0 End) as Döner/Pommes
SUM(Case when (Skl.Fähigkeit = 'Döner and Skl.Level > 2) and (Skl.Fähigkeit = 'Pommes' and Skl.Level <= 2) and (Skl.Fähigkeit = 'Schnitzel' and Skl.Level > 2) Then 1 Else 0 End) as Döner/Schnitzel
SUM(Case when (Skl.Fähigkeit = 'Döner and Skl.Level <= 2) and (Skl.Fähigkeit = 'Pommes' and Skl.Level > 2) and (Skl.Fähigkeit = 'Schnitzel' and Skl.Level > 2) Then 1 Else 0 End) as Pommes/Schnitzel
SUM(Case when (Skl.Fähigkeit = 'Döner and Skl.Level > 2) and (Skl.Fähigkeit = 'Pommes' and Skl.Level > 2) and (Skl.Fähigkeit = 'Schnitzel' and Skl.Level > 2) Then 1 Else 0 End) as Döner/Pommes/Schnitzel
FROM Einsatz as Eins
LEFT JOIN Skill as Skl ON Eins.Name = Skl.Name
WHERE Eins.Position LIKE 'Dönerbude' OR Eins.Position LIKE 'Pommesstand'
Ziel wäre dann eine Tabelle zu haben, die so aussieht
Döner | Döner/Pommes | Döner/Schnitzel | Pommes/Schnitzel | Döner/Pommes/Schnitzel |
0 | 1 | 0 | 1 | 0 |
Hier wurden jeztt nur Jürgen und Hans berücksichtigt und ihre Skills nach den folgenden Kombinationen geschaut.
Funktioniert aber nicht. Ich vermute, dass es an der Case when liegt, die keine mehrere Zeilen anschauen kann und als AND kombinieren kann. Anderes Problem ist natürlich auch, dass meine richtige Tabelle viel größer ist und aus viel mehr Positionenen und Fähigkeiten besteht.
Ich müsste das iwie dynamisch gestalten, wofür mir das Know-How fehlt.
Hat jemand eine einfache Idee?