Dies ist meine SQL-Anweisung, arbeitet mit datediff:Mit datediff in MySQL-Anweisung
:SELECT SUM(b134_nettpay) AS Total, b134_rmcid, b134_recdate
FROM B134HREC
WHERE datediff (dd, '2006-05-05', getdate()) > 90
GROUP BY b134_rmcid, b134_recdate
ORDER BY b134_recdate DESC, b134_rmcid
ich das Fest programmierte Datum '2006-05-05' mit MAX (b134_recdate) wie so ersetzen müssen
SELECT SUM(b134_nettpay) AS Total, b134_rmcid, b134_recdate
FROM B134HREC
where datediff (dd, MAX(b134_recdate), getdate()) > 90
GROUP BY b134_rmcid, b134_recdate
ORDER BY b134_recdate DESC, b134_rmcid
Aber ich bekomme diese Fehlermeldung:
ein Aggregat kann nicht in der WHERE-Klausel erscheinen, wenn es in einer Unterabfrage in einer HAVING claus enthalten ist e oder eine Auswahlliste, und die aggregierte Spalte ist eine äußere Referenz.
Irgendeine Idee, wie man meine SQL Aussage repariert?
Dies adressiert die "oder eine Auswahlliste", wie von der Fehlermeldung vorgeschlagen –
Wie es steht, kann die Abfrage keinen Index nutzen, der auf b134_recdate (außer für die max) sein könnte. Wenn es "wo B134_rec_date> DateAdd (dd, getDate(), 90)" wäre, würde es einen Index verwenden, falls er existiert. NB: Ich bin mir nicht sicher, ob die Datumssyntax korrekt ist, aber Sie bekommen die Idee. –