da meine SQL-Kenntnisse schon etwas angestaubt sind, frage ich mal die Experten. 🙂
also so ich habe eine Tabelle mit mehreren Datensätzen (Artikelbewegungsdaten)
Jede Artikelnummer kann in der Tabelle mehrfach vorkommen.
nun möchte ich aus der Tabelle die Datensätze so auslesen, dass es jede Artikelnummer nur in Mal in dem Ergebnis gibt (die anderen Daten/Spalten sind zwar uninteressant, müssen aber auch mit ausgegeben werden)
also aus der Tabelle:
[Item No.] [Description] ....
1 Abc
1 Yxz
2 Asd
3 Qqq
1 Aaa
2 Dfe
...
soll:
[Item No.] [Description] ....
1 Abc
2 Asd
3 Qqq
...
??
Einfach ein "GROUP BY ItemNo" an das SQL-Statement dranhängen
Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.
Je nach gewünschtem Verhalten kommt auch in Frage:
SELECT DISTINCT ItemNo ORDER BY ItemNo
Jürgen
Danke für eure Antworte. Leider geht das nicht, denn mit DISTINCT bzw. GROUP BY werden die Datensätze nicht über eine einzelne Spalte gruppiert. Da muss man schon entweder alle Spalten für die Gruppierung einbeziehen oder auf einige Spalten verzichten. Beides ist aber nicht erwünscht.
Versuch mal ( ausgehend von SQL Server ):
DECLARE @item int
DECLARE MyCursor CURSOR FOR
SELECT item FROM Table GROUP BY item HAVING COUNT(item) > 0
OPEN MyCursor
FETCH MyCursor INTO @item
WHILE @@Fetch_Status = 0
BEGIN
SELECT TOP 1 * FROM Table where item = @item
FETCH MyCursor INTO @item
END
CLOSE MyCursor
DEALLOCATE MyCursor
Bevor es jemand anprangern möchte. Ich weiß, Cursor sind nicht das beste Mittel zwecks Performance.
Original von Noodles
Bevor es jemand anprangern möchte. Ich weiß, Cursor sind nicht das beste Mittel zwecks Performance.
Ups....lösch....lösch...lösch... 😁