SQL SELECT med DISTINCT på flere kolonner

author
2 minutes, 17 seconds Read

Beskrivelse

Multiple fields may also be added with DISTINCT clause. DISTINCT vil fjerne de rækker, hvor alle de valgte felter er identiske.

Her er en simpel forespørgsel på nogle udvalgte kolonner i tabellen orders, hvor agent_code=’A002′

Sample table : orders

SQL Code:

SELECT agent_code, ord_amount, cust_code, ord_numFROM orders WHERE agent_code='A002';

Output:

Overstående billede viser, at den samme agent_code, ord_amount og cust_code optræder mere end én gang i tabellen orders.

Eksempel : select with distinct on two columns

For at få de identiske rækker (baseret på to kolonner agent_code og ord_amount) én gang fra ordretabellen kan følgende sql-anvisning bruges :

SQL-kode:

SELECT distinct agent_code,ord_amountFROM orders WHERE agent_code='A002';

Output:

Billedlig præsentation af ovenstående forespørgsel :

Eksempel: select with distinct on three columns

For at få de identiske rækker (baseret på de tre kolonner agent_code, ord_amount og cust_code) én gang fra tabellen “orders” kan følgende SQL-angivelse anvendes:

Selvfølgelig er der en række identiske rækker (baseret på de tre kolonner agent_code, ord_amount og cust_code) i tabellen “orders”, men det er muligt at bruge følgende SQL-angivelse:

SQL-kode:

 SELECT distinct agent_code, ord_amount,cust_code FROM orders WHERE agent_code='A002';

Output:

Billedlig præsentation af ovenstående forespørgsel :

Eksempel: select med distinkt på alle kolonner i den første forespørgsel

For at få de identiske rækker (på grundlag af fire kolonner agent_code, ord_amount, cust_code og ord_num) én gang fra tabellen “orders” kan følgende sql-anvisning anvendes: :

select distinct agent_code,ord_amount,cust_code,ord_num from orders WHERE agent_code='A002';

Output:

I ovenstående output er alle rækker, hvis agent_kode er “A002”, returneret, fordi der ikke er identiske rækker på agent_kode, ord_amount, cust_kode og ord_num. Se følgende præsentation :

Billedlig præsentation af ovenstående forespørgsel :

Select med distinct på flere kolonner og order by-klausul

Du kan bruge en order by-klausul i select-angivelsen med distinct på flere kolonner. Her er et eksempel :

 SELECT distinct agent_code,ord_amount FROM orders WHERE agent_code='A002' order by ord_amount;

Output:

Count() funktion og select med distinct på flere kolonner

Du kan bruge count() funktion i en select-erklæring med distinct på flere kolonner til at tælle de forskellige rækker. Her er et eksempel :

 select count(*) from ( SELECT distinct agent_code, ord_amount,cust_code FROM orders WHERE agent_code='A002');

Output:

Output af den nævnte SQL-angivelse, der vises her, er taget ved hjælp af Oracle Database 10g Express Edition.

Similar Posts

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.