2016-05-10 14 views
0

Ich versuche, die ausgewählten Spalten für jede Benutzer-ID das letzte Datum DT, die er gekauft hat, zu ziehen.Kann einige der ausgewählten Spalten nicht gruppieren

Also ich denke, das ist falsch, weil ich kann nicht Gruppe von Purchased, A , S

SELECT UserID, MAX(Date), Purchased, A , S 
FROM aramdb 
WHERE Purchased > 0 
GROUP BY UserID; 

Dank!

+4

Welche RDBMS verwenden Sie? –

+0

Allgemeine GROUP BY-Regel: "Wenn eine GROUP BY-Klausel angegeben ist, muss jede Spaltenreferenz in der SELECT-Liste entweder eine Gruppierungsspalte angeben oder das Argument einer set-Funktion sein." – jarlh

Antwort

1

Wenn Sie SQL Server verwenden, oder andere dbms die Fensterfunktionen unterstützt, können Sie verwenden ROW_NUMBER:

WITH Cte AS(
    SELECT *, 
     rn = ROW_NUMBER() OVER(PARTITION BY UserID ORDER BY Date DESC) 
FROM aramdb 
WHERE Purchased > 0 
) 
SELECT 
    UserID, Date, Purchased, A , S 
FROM Cte 
WHERE rn = 1 
+0

Das ist hilfreich, danke! – NANA

Verwandte Themen