zwei Abfragen auf eine Tabelle zusammenführen?

rosenwasser

Neuer Benutzer
Beiträge
2
Hallo zusammen hier!

ich lese hier schon länger mit, und habe mich bisher so durchgewurstelt mit SQL-abfragen mit Hilfe von Google (trial and error :))
Ich habe eine Frage, bzw ein kleines Problem:

Ich habe eine Tabelle mit folgenden Spalten:

kd-nr, kaufdatum, produkt

nun soll ich eine Liste machen mit leuten, die das produkt "xy" im Januar24 gekauft haben,
und zwar einmal mit Leuten, deren erstes Kaufdatum gößer ist als 1.7.2023, und einmal mit Leuten, deren erstes Kaufdatum älter ist als 1.7.2023 (also Neukunden und Bestandskunden)

ich bin so vorgegangen mit zwei separaten Abfragen:

Abfrage 1:
select kd-nr from tabelle
group by kd-nr having min(kaufdatum) > 30.06.2023
-> das sind alles neukunden ab 1.7.23

Dann füge ich diese kd-Nummern in Abfrage 2 ein:
select kd-nr
where Produkt = 'xy'
and kaufdatum > 31.12.2023 and Kaufdatum < 01.02.2024 and kd-nr not in ( hier die nummern aus der ersten abfrage)
-> alle alten Kunden

dann lösche ich das 'not', so dass ich alle neuen Kunden habe.

Das ist nun etwas umständlich, aber meine SQL- Kenntnisse lassen nicht mehr zu.
Kann man das auch in eine Abfrage packen? SQL-Server-version ist 2005.

Viele Grüße
Kai
 
Werbung:
Werbung:
Code:
SELECT    tabelle.*,
        ( CASE WHEN t.min_kaufdatum > '2023-06-30' THEN 'Neukunde' ELSE 'Bestandskunde' END ) AS kundenstatus
FROM    tabelle
LEFT JOIN (
    SELECT    [kd-nr],
            min(kaufdatum) AS min_kaufdatum
    FROM    tabelle
    GROUP BY [kd-nr]
) t
ON        tabelle.[kd-nr] = t.[kd-nr]
WHERE    tabelle.produkt = 'xy'
AND        datepart(year,tabelle.kaufdatum) = 2014
AND        datepart(month,tabelle.kaufdatum) = 1
Das kannst du natürlich sortieren oder gruppieren oder was auch immer.
 
Zurück
Oben