---
title: "SELECT DISTINCT TOP"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/178411-select-distinct-top"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "KrpSvedberg"
published: "2009-05-05T08:13:32.000Z"
updated: "2009-05-12T18:44:49.000Z"
replies: 5
views: 724
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/178411-select-distinct-top"
---

# SELECT DISTINCT TOP

## #1 — KrpSvedberg, 2009-05-05T08:13Z

Hej!

Har lite problem med en fråga. Jag använder MS SQL Server 2000.

Jag har två kolumner (som jag vill ha ut). Date och Value. jag försöker skapa en topplista över vilka månader som har bäst världen. Problemet är att jag har flera värden (rader) med samma datum/månad. Tex i april 2009 finns 4 poster som egentligen kvalar in på topplistan, men endast en skall synas.

Min nuvarande SQL ser ut som följer:

```
SELECT TOP 5 * FROM (
SELECT DISTINCT sDate, mValue
FROM tImportSession
) dt
ORDER BY mValue
```

men med denna får jag ut samma månad gång på gång.

Kortfattat:
Jag behöver alltså få ut TOP 5 Value med unika månader.

Tack på förhand!

Permalänk: https://www.webforum.nu/p/178411

## #2 — Peter S, 2009-05-05T08:18Z

```
select top 5 sDate, max(mValue) from timportsession group by sDate order by 2 desc
```

Permalänk: https://www.webforum.nu/p/2184028

## #3 — KrpSvedberg, 2009-05-05T08:27Z

Tack för extremt snabbt svar! Du räddade min tisdag ;)

Permalänk: https://www.webforum.nu/p/2184031

## #4 — Peter S, 2009-05-05T08:31Z

Trevligt!  :)

Permalänk: https://www.webforum.nu/p/2184032

## #5 — MickeA.com, 2009-05-10T09:11Z

Jag har ett liknande problem nu, fast i MySQL. Frågan ser ut såhär

```
SELECT
a.level_id, a.level_name,
b.group_id, b.group_name, b.group_time, b.group_start, b.group_end, b.group_cost, b.group_hall, b.startpack_cost,
c.user_id, c.user_pers_number, UPPER(c.user_firstname) AS user_firstname, UPPER(c.user_lastname) AS user_lastname, c.user_phone1, c.user_phone2, c.user_email, UPPER(c.user_addr) AS user_addr, UPPER(c.user_addrco) AS user_addrco, c.user_postnum, UPPER(c.user_postaddr) AS user_postaddr, c.user_mem_num, c.user_lic_num,
d.not_type, d.not_inv_num, d.not_pay_type, d.not_add_startpack, d.not_mem_fee, d.not_lic_fee, d.not_campaign, d.not_datetime,
e.invoice_num, e.invoice_type, e.invoice_date, e.invoice_amount, e.invoice_fee, e.invoice_remind_fee, DATE(DATE_ADD(FROM_UNIXTIME(e.invoice_date), INTERVAL e.invoice_expire DAY)) AS invoice_expire, e.invoice_paid, e.invoice_bgnum, e.invoice_msg,
(SELECT user_firstname FROM user WHERE user_id = b.group_instr_1) AS trainer_firstname,
(SELECT user_lastname FROM user WHERE user_id = b.group_instr_1) AS trainer_lastname
FROM
school_level a, school_group b, school_user c, school_notifies d, school_invoice e
WHERE a.level_id = b.group_parent
AND b.group_id = d.not_group_id
AND c.user_id = d.not_user_id
AND d.not_id = e.invoice_parent
AND d.not_inv_num IN(
   $invsql 
)
[b]GROUP BY d.not_inv_num[/b]
ORDER BY
e.invoice_num DESC
```

$invsql är en serie kommaseparerade 7-siffriga nummer.
Det är fakturor som ska hämtas, det kan finnas *\[x* antala fakturor med samma *invoice_parent*, som är själva bokningen fakturan avser.

Frågan ovan ska endast plocka ut den senaste fakturan på varje bokning, men nu blir det tvärtom. Tar jag bort *GROUP BY* så hämtas alla fakturor även om har samma parent.

Hur löser jag det här?

Permalänk: https://www.webforum.nu/p/2184477

## #6 — MickeA.com, 2009-05-12T18:44Z

Ingen som vet hur jag ska lösa mitt problem?
Kan ju inte sortera eller grupperna på ID'n, eftersom dom är unika.

Behöver verkligen lösa det här, men förstår inte hur jag ska bära mig åt.

Tack,

Permalänk: https://www.webforum.nu/p/2184737

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/178411-select-distinct-top
