Выберите отдельные значения из 1 столбца - PullRequest
23 голосов
/ 17 декабря 2009

Я хочу выбрать отдельные значения только из одного столбца (столбец BoekingPlaatsId) с помощью этого запроса:

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

Как мне это сделать в SQL Server?

Ответы [ 9 ]

19 голосов
/ 17 декабря 2009

DISTINCT должно работать, если вы просто хотите, чтобы имена пользователей:

SELECT DISTINCT BewonerId, Naam, Voornaam
FROM TBL

но если вам нужны минимальные значения идентификатора, группируйте по именам ...

SELECT MIN(BoekingPlaatsId), MIN(BewonerId), Naam, Voornaam
FROM TBL
GROUP BY Naam, Voornaam
7 голосов
/ 17 декабря 2009

Я думаю, что вы должны быть в состоянии использовать

SELECT DISTINCT BewonerId, Naam, VoorNaam

Вы не можете добавить BoekingPlaatsId, потому что:

  • DISTINCT ищет уникальные строки
  • Вам нужно указать, какое BoekingPlaatsId значение вы хотите
    (В случае с Jan Janssens, вы хотите BoekingPlaatsId 1 или 2?)

Что также работает, так это:

SELECT MAX(BoekingPlaatsId), BewonerId, Naam, VoorNaam
FROM ...
GROUP BY BewonerId, Naam, VoorNaam
5 голосов
/ 17 декабря 2009

Я этого не делаю, поэтому я не на 100% уверен в синтаксисе, поэтому вам, возможно, придется немного его подправить, перестроить рейтинг Google и разделить. Попробуйте это ...

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

Это излишне для таблицы из 4 столбцов, но если у вас достаточно денормализованная таблица с большим количеством столбцов, этот подход неоценим для выбора отдельных в 1 столбце.

0 голосов
/ 09 мая 2017

Я столкнулся с подобной проблемой, и для меня решение было использовать предложение GROUP BY . В общем, я сгруппировал все блоги с одинаковым названием в одну группу.

Синтаксис:

SELECT post_title, post_link
FROM blogs
WHERE [ conditions ]
GROUP BY post_title
ORDER BY post_title;

Возможно, вы группируете несколько столбцов

0 голосов
/ 19 апреля 2017

Вот как вы можете выбрать из таблицы только уникальные значения для вашего столбца:

CREATE VIEW [yourSchema].[v_ViewOfYourTable] AS
WITH DistinctBoekingPlaats AS
(
    SELECT [BewonerId], 
           [Naam],
           [VoorNaam],
           [BoekingPlaatsId],
           ROW_NUMBER() OVER(PARTITION BY [BoekingPlaatsId] ORDER BY DESC) AS 'RowNum'
    FROM [yourSchema].[v_ViewOfYourTable]
)
SELECT * 
FROM DistinctProfileNames
WHERE RowNum = 1
--if you would like to apply group by you can do it in this bottom select clause but you don't need it to gather distinct values 

Вам не нужно группировать, чтобы выполнить это.

0 голосов
/ 17 декабря 2009

Звучит так, как будто вы хотите что-то вроде

select distinct(BewonerId), Naam, Voornaam from table_name
0 голосов
/ 17 декабря 2009

Я думаю, что вы ищете что-то вроде этого:

select distinct column1 from table1 where column2 = (select distinct column2 from table1)
0 голосов
/ 17 декабря 2009
select Naam, Voornaam, min(BewonerId), min(BoekingPlaatsId) from tableName
group by Naam, Voornaam
0 голосов
/ 17 декабря 2009

просто сгруппировать по этим 2 столбцам

  Select Min(BoekingPlaatsId), Min(bewonerId), naam, voornaam
  from table
  group By naam, voornaam
...