MAX- Problem - GROUP BY

db_gustl

Benutzer
Beiträge
13
Hallo,

ich habe folgende Abfrage:
Code:
SELECT sm.MATNR, MAX(sm.MMSTD) as date, sm.MMSTA
FROM EM.dbo.v_000_MARC_0000 sm
WHERE sm.MATNR = 'A5E02523685'
GROUP BY sm.MATNR, sm.MMSTA

Diese liefert folgende Tabelle:
Code:
MATNR        | date    | MMSTA
-------------+----------+------------
A5E02523685  | 20120314 | 13
A5E02523685  | 00000000 | 34

Ich möchte aber dass nur der Datensatz angezeigt wird, der bei date den max-wert hat.
Somit wäre es, zb. bei mysql, logisch einfach nicht nach MMSTA zu gruppieren, aber das verzeiht mit MS SQl ja leider nicht.

Hat jemand eine Idee wie ich das in einer Abfrage lösen könnte?
Gruß Gustl

Edit: Natürlich könnte man in diesem Fall mit limit und order arbeiten, aber ich habe die MATNR nur zum Verständnis gewählt, zum schluss soll die where-Bedingung mit der MATNR wegfallen.
 
Werbung:

PLSQL_SQL

Datenbank-Guru
Beiträge
176
Hy,

dies würde mit einem Subselect auf jeden Fall gehen!

Code:
SELECT sm.MATNR
      ,sm.MMSTD as date
      ,sm.MMSTA
FROM EM.dbo.v_000_MARC_0000 sm
WHERE sm.MATNR = 'A5E02523685'

--liefert maximales Datum
AND sm.MMSTD = ( select MAX(sub.MMSTD) 
                    from EM.dbo.v_000_MARC_0000 sub
                    where sub.MATNR = sm.MATNR --JOIN der Unterabfrage mit der "äußeren" Hauptabfrage über "MATNR"
               )

LG
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.416
Eventuell sollte man hier auch mit HAVING arbeiten, ich kann jetzt aber schlecht beurteilen ob das klappt:
Code:
SELECT    sm.MATNR,
        MAX(sm.MMSTD) as date,
        sm.MMSTA
FROM    EM.dbo.v_000_MARC_0000 sm
WHERE    sm.MATNR = 'A5E02523685'
GROUP BY sm.MATNR, sm.MMSTA
HAVING sm.MMSTD = MAX(sm.MMSTD)
 
Oben