Datenbank Forum - für Anfänger und Profis

Willkommen im Datenbank Forum von Datenbanken-verstehen.de - Das Datenbank, Data Warehouse & Business Intelligence Forum!

Das Datenbank Forum für Anfänger und Profis ist eine Community zu den Themen Datenbanken, Data Warehouse & Business Intelligence. Nimm teil an der Community von Datenbanken-verstehen.de und tausch dich mit deinen Fragen und Lösungen mit anderen Nutzern aus.

Als registrierter Benutzer genießt Du viele Vorteile, wie

  • den vollen Zugang zu allen Foren und Unterforen
  • Kostenloses Lernmaterial inkl. Lösungen zum Thema Datenbanken
  • Zugriff auf DB-Tutorials, Best Practices und SQL-Snippets

Bevor Du einen Beitrag verfassen möchtest, kannst Du dich einfach kostenlos registrieren.

oder Einloggen mit



Beachte bitte die Forenregeln von Datenbanken-verstehen.de. Wir wünschen Dir viel Spaß im Datenbank Forum! - Dein Datenbanken-verstehen.de-Team

SQL Abfrage: zusätzliche Spalte mit zweiter where Bedingung

Hier werden die SQL Grundlagen behandelt...

SQL Abfrage: zusätzliche Spalte mit zweiter where Bedingung

Beitragvon Budy » Do 15. Jun 2017, 09:34

Hallo

Bin neu hier und auch ein Anfänger was SQL Abfragen betrifft.

Ich habe eine Datenbank (PostgreSQL) bei welcher ich folgende Abfrage mache:
Code: Alles auswählen
SELECT
  mitarbeiterkonten.sachb,
  sachbearbeiter.name,
  sachbearbeiter.vorname,
  sachbearbeiter.abteilung,
  kontoarten.bezeichnung,
  mitarbeiterkonten.saldo_aktjahr AS "Überzeit"
FROM
  mitarbeiterkonten
  INNER JOIN sachbearbeiter ON sachbearbeiter.sachb = mitarbeiterkonten.sachb
  INNER JOIN kontoarten ON kontoarten.kontoart = mitarbeiterkonten.kontoart
WHERE
  mitarbeiterkonten.kontoart = 'SAL' AND
  mitarbeiterkonten.abschl_datum IS NULL AND
  sachbearbeiter.austrittsdatum IS NULL AND
  sachbearbeiter.geloescht = 'N'
GROUP BY
  mitarbeiterkonten.sachb,
  sachbearbeiter.name,
  sachbearbeiter.vorname,
  sachbearbeiter.abteilung,
  kontoarten.bezeichnung,
  mitarbeiterkonten.saldo_aktjahr,
  mitarbeiterkonten.kontoart,
  mitarbeiterkonten.abschl_datum,
  sachbearbeiter.austrittsdatum,
  sachbearbeiter.geloescht
ORDER BY
  sachbearbeiter.name,
  sachbearbeiter.vorname


Das Resultat ist eine Tabelle mit folgenden Spalten:
Sachb/Name/Vorname/Abteilung/Bezeichnung/Überzeit

Die Spalte Überzeit wird definiert durch "mitarbeiterkonten.saldo_aktjahr" und die where Bedingung "mitarbeiterkonten.kontoart = 'SAL'"

Was muss ich machen, damit ich eine zusätzliche Spalte "Überstunden" im Resultat in der selben Zeile zum jeweiligen Sachbearbeiter "Sachb" erhalte? (Hier muss die Bedingung beim where "mitarbeiterkonten.kontoart = 'UE1'" sein)

Vielen Dank schon mal im Voraus für euere Hilfe.

Philipp
Budy
 
Beiträge: 2
Registriert: Do 15. Jun 2017, 09:18

Re: SQL Abfrage: zusätzliche Spalte mit zweiter where Beding

Beitragvon SQLUnion » Do 15. Jun 2017, 17:17

Hallo Budy,

willkommen im Forum.
Wenn ich deine Frage richtig verstehe, dann könntest Du ein CASE WHEN-Statement einsetzen:

Code: Alles auswählen
SELECT
  mitarbeiterkonten.sachb,
  sachbearbeiter.name,
  sachbearbeiter.vorname,
  sachbearbeiter.abteilung,
  kontoarten.bezeichnung,
  mitarbeiterkonten.saldo_aktjahr AS "Überzeit",
 CASE WHEN mitarbeiterkonten.kontoart = 'UE1' THEN 'JA' ELSE 'NEIN' AS Ueberstunden
...


Gruß,
SQLUnion
SQLUnion
 
Beiträge: 124
Registriert: Fr 1. Nov 2013, 15:54

Re: SQL Abfrage: zusätzliche Spalte mit zweiter where Beding

Beitragvon Budy » Mo 19. Jun 2017, 10:11

Hallo SQLUnion

Erstmal vielen Dank für die rasche Antwort.
Ich bin mir nicht ganz sicher ob dein Ansatz funktioniert, da es für die " mitarbeiterkonten.kontoart" nicht nur SAL und UE1 gibt, sondern auch noch etliche anderen. Ich möchte einfach nur diese zwei auswerten.
Du kannst dir meine SQL Abfrage so vorstellen, dass ich diese mometan zwei mal mit unterschiedlicher where Bedingung (einmal mitarbeiterkonten.kontoart = 'SAL' und einmal mitarbeiterkonten.kontoart = "UE1" ausführe. Ich habe also zwei Abfragen.
Was ich nun möchte ist eine Abfrage, welche beide Resultate in unterschiedlichen Spalten ergibt (und dies pro Sachbearbeiter).
Das Resultat wäre dann eine Tabelle mit folgenden Spalten:
Sachb/Name/Vorname/Abteilung/Bezeichnung/Überzeit/Überstunden

Hoffe es hiermit etwas klarer formuliert zu haben.

Wenn ich deinen Vorschlag eins zu eins in meine Abrage einbaue:

SELECT
mitarbeiterkonten.sachb,
sachbearbeiter.name,
sachbearbeiter.vorname,
sachbearbeiter.abteilung,
kontoarten.bezeichnung,
mitarbeiterkonten.saldo_aktjahr AS "Überzeit",
CASE WHEN mitarbeiterkonten.kontoart = 'UE1' THEN 'JA' ELSE 'NEIN' AS Ueberstunden
FROM
mitarbeiterkonten
INNER JOIN sachbearbeiter ON sachbearbeiter.sachb = mitarbeiterkonten.sachb
INNER JOIN kontoarten ON kontoarten.kontoart = mitarbeiterkonten.kontoart
WHERE
mitarbeiterkonten.kontoart = 'SAL' AND
mitarbeiterkonten.abschl_datum IS NULL AND
sachbearbeiter.austrittsdatum IS NULL AND
sachbearbeiter.geloescht = 'N' AND
mitarbeiterkonten.sachb = 'PW'
GROUP BY
mitarbeiterkonten.sachb,
sachbearbeiter.name,
sachbearbeiter.vorname,
sachbearbeiter.abteilung,
kontoarten.bezeichnung,
mitarbeiterkonten.saldo_aktjahr,
mitarbeiterkonten.kontoart,
mitarbeiterkonten.abschl_datum,
sachbearbeiter.austrittsdatum,
sachbearbeiter.geloescht
ORDER BY
sachbearbeiter.name,
sachbearbeiter.vorname


So erhalte ich folgende Fehlermeldung:
Invalid Select statement. Unexpected token «AS» at line8, pos 69

Vielen Dank für deine Hilfe.

Gruss

Budy



SQLUnion hat geschrieben:Hallo Budy,

willkommen im Forum.
Wenn ich deine Frage richtig verstehe, dann könntest Du ein CASE WHEN-Statement einsetzen:

Code: Alles auswählen
SELECT
  mitarbeiterkonten.sachb,
  sachbearbeiter.name,
  sachbearbeiter.vorname,
  sachbearbeiter.abteilung,
  kontoarten.bezeichnung,
  mitarbeiterkonten.saldo_aktjahr AS "Überzeit",
 CASE WHEN mitarbeiterkonten.kontoart = 'UE1' THEN 'JA' ELSE 'NEIN' AS Ueberstunden
...


Gruß,
SQLUnion
Budy
 
Beiträge: 2
Registriert: Do 15. Jun 2017, 09:18

Re: SQL Abfrage: zusätzliche Spalte mit zweiter where Beding

Beitragvon SQLUnion » Fr 23. Jun 2017, 21:28

Hi Budy,

der neue CASE WHEN-Teil muss natürlich auch in den Group By Statement-Bereich,
dann sollte das klappen.

Gruß,
SQLUnion
SQLUnion
 
Beiträge: 124
Registriert: Fr 1. Nov 2013, 15:54


Zurück zu SQL Grundlagen

 


  • Related topics
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron
  • Jetzt Fan werden
  • Newsletter abonnieren? Hier anmelden!

    Alle Informationen aus dem Portal, Blog und Forum in einem Newsletter!

    E-Mail-Adresse: