Select distinct values from 1 column

Viewed 91029

I want to select distinct values from only one column (the BoekingPlaatsId column) with this query:

SELECT MAX(BoekingPlaatsId), BewonerId, Naam, VoorNaam
FROM table
GROUP BY BewonerId, Naam, VoorNaam

How do I do that in SQL Server?

9 Answers

DISTINCT should work if you just want the user names:

SELECT DISTINCT BewonerId, Naam, Voornaam
FROM TBL

but if you need the minimum ID values, group by the names...

SELECT MIN(BoekingPlaatsId), MIN(BewonerId), Naam, Voornaam
FROM TBL
GROUP BY Naam, Voornaam

I think you should be able to use

SELECT DISTINCT BewonerId, Naam, VoorNaam

You can't add BoekingPlaatsId, because:

  • DISTINCT looks for unique rows
  • You need to specify what BoekingPlaatsId value you want
    (In case of Jan Janssens, do you want BoekingPlaatsId 1 or 2?)

What also works is this:

SELECT MAX(BoekingPlaatsId), BewonerId, Naam, VoorNaam
FROM ...
GROUP BY BewonerId, Naam, VoorNaam

I don't do alot of this so i'm not 100% certain of the syntax so you may need to tweak it slightly, google rank over and partition. Try this...

SELECT 
    *,
    RANK() OVER(PARTITION BY Naam  order by Naam ) as Rank
FROM
    TABLE
WHERE 
    Rank = 1

This is overkill for a 4 column table, but if you have a fairly denormalised table with alot of columns, this approach is invaluable for select distinct on 1 column.

just group By those 2 columns

  Select Min(BoekingPlaatsId), Min(bewonerId), naam, voornaam
  from table
  group By naam, voornaam
select Naam, Voornaam, min(BewonerId), min(BoekingPlaatsId) from tableName
group by Naam, Voornaam

I think what you're looking for is something like this:

select distinct column1 from table1 where column2 = (select distinct column2 from table1)

Sounds like you want something like

select distinct(BewonerId), Naam, Voornaam from table_name
Related