Just nu i M3-nätverket
Gå till innehåll

Ta fram de 20 raderna där ett namn förekommer oftast FIREBIRD


Nigge

Rekommendera Poster

Tjena, det står fullständigt stilla här, ett inlägg här brukar oftast få snabba och bra svar så jag gör ett försök.

 

Jag har en SQL-Query som ser ut såhär:

 SELECT COMPANIES.COMPANY_NAME, PO_HEADER.PO_NUMBER, PO_HEADER.ENTRY_DATE
 FROM   PO_HEADER INNER JOIN COMPANIES ON PO_HEADER.CMP_AUTO_KEY=COMPANIES.CMP_AUTO_KEY
 WHERE  PO_HEADER.ENTRY_DATE BETWEEN '2012-01-01' AND '2013-12-31'
 ORDER BY COMPANIES.COMPANY_NAME

 

Det den gör idag är att den tar fram alla företag som vi har gjort inköp hos inom tidsramen 2012-01-01 och 2013-12-31

Det jag dock vill att den gör är att den ENDAST visar "topp 20" av företagsnamnen som förekommer

Alltså, jag vill visa de 20 företag vi köpt från flest gånger under denna tidsperiod.

 

 

Länk till kommentar
Dela på andra webbplatser

SELECT TOP 20 ...
 
Notera dock: 

 

Use caution when specifying the TOP clause in a query that contains a UNION, UNION ALL, EXCEPT, or INTERSECT operator. It is possible to write a query that returns unexpected results because the order in which the TOP and ORDER BY clauses are logically processed is not always intuitive when these operators are used in a select operation.

 

Länk till kommentar
Dela på andra webbplatser

Problemet är att TOP 20 inte fungerar, man får göra en FIRST 20 i Firebird.

Problemet är dock att då tar den första 20 raderna oavsett, jag behöver alltså sortera dem efter antalet ggr de förekommer

 

MEN det kommer inte lösa allt heller, eftersom jag vill att företagen som förekommer mest ggr bara ska visas 1 gång ändå, så att 20 företag kommer med.

 

Annars blir det ju lätt så att första 20 raderna är samma företag.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...