Hallo,
möchte über eine Abfrage ein LIMIT auf die einzelnen WHERE Clauseln setzen, geht sowas?
Sprich wenn Clausel 1 greift soll er bei 5 Ergebnissen aufhören, bei clausel 2 das gleiche …
SELECT
max(artikel),auftrag,max(seite),
int4(1000000/float8((sum(sj)+sum(parts)))*sum(fehler))
FROM aoi_auswertung
WHERE (artikel='xyz' and seite = 'TOP') or (artikel='xyz' and seite = 'BOT')
GROUP by auftrag
ORDER by max(r_date) desc
LIMIT 10
Der SQL bringt mir nur Ergebnisse der 1. Clausel, logisch weil die mehr als 10 Ergebnnisse bringt.
Wie kann man so etwas lösen?
Du hast nur exakt 1 (in Worten: 1) Where-Clause. Mein Kaffeesatz meint aber, Du willst gruppenweise ein Limit. Das geht, indem Du gruppenweise die Rows zählst:
select …, row_number() over(partition by …) as counter
Damit bekommst je Gruppe eine Zählung. In einem Select da drum herum kannst dann das als Where-Condition nehmen:
select max_artikel,
auftrag,
max_seite,
fehler_summe
from (
SELECT max(artikel) over (partition by auftrag) as max_artikel,
auftrag,
max(seite) over (partition by auftrag) as max_seite,
int4(1000000/float8((sum(sj)+sum(parts)))*sum(fehler)) over (partition by auftrag) as fehler_summe,
row_number() over (partition by auftrag order by r_date desc) as rn,
FROM aoi_auswertung
WHERE (artikel='xyz' and seite = 'TOP') or (artikel='xyz' and seite = 'BOT')
) t
where rn <= 10;