Hallo Forum,
ich habe folgende Beispieltabelle:
Entry No | Artikel | Artikelgruppe | Kunde | Menge
1 Fahrrad Zweirad 100 10
2 Fahrrad Zweirad 100 12
3 Fahrrad Zweirad 100 14
4 Stuhl Möbel 100 16
5 Stuhl Möbel 100 18
6 Stuhl Möbel 100 20
so, das erst einmal als Beispieldaten. Ich möchte jetzt immer den ersten Eintrag innerhalb der Gruppen haben. Also in diesem Beispiel möchte ich, dass mein SQL die beiden Datensätze
1 Fahrrad Zweirad 100 10 (erster in der Gruppe Fahrrad, Zweirad und Kunde 100)
4 Stuhl Möbel 100 16 (erster in der Gruppe Stuhl, Möbel und Kunde 100)
zurückliefert. Geht so etwas mit einem SQL-Statement oder muss ich doch eher dazu übergehen und eine stored procedure programmieren? Sollte ich eine SP nutzen müssen, würde ich immer eine Zeile mit der vorhergehenden Vergleichen, um so zu prüfen ob eine Änderung vorliegt?
Hat hier jemand eine Idee? Würde mich über Hilfe sehr freuen.
Danke!!!!
Unter der Annahme das Entry No eindeutig ist, sollte folgendes funktionieren:
SELECT*
FROM
dbo.Tabelle T1
JOIN
(SELECT
MIN([Entry No]) AS EntryNo
FROM
dbo.Tabelle
GROUP BY
Artikel, ArtikelGruppe, Kunde) T2 ON T1.[Entry No] = T2.EntryNo
Ansonsten müsste in der abgeleiteten Tabelle T2 die SELECT Liste angepasst und um die Key Spalten erweitert werden und die JOIN Bedingung auch angepasst werden.
--
Frank Kalis
Microsoft SQL Server MVP
Webmaster: http://www.insidesql.org