2009-12-16 2 views
20

Я хочу, чтобы выбрать различные значения только из одной колонки (колонка BoekingPlaatsId) с этим запросом:Выберите различные значения от 1 колонка

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

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

+3

"Я хочу, чтобы выбрать ** ** различные значения [...]". Удивительно, насколько близко можно ответить на него, не зная об этом :) –

ответ

18

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

SELECT DISTINCT BewonerId, Naam, Voornaam 
FROM TBL 

, но если вам нужны минимальные значения ID, группа по именам ...

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

Группировка по всему хорошо для небольшого стола, но это отстой для большого стола. –

0

только группа Тех 2 колонны

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

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

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

Подзапрос не является скаляром –

7

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

SELECT DISTINCT BewonerId, Naam, VoorNaam 

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

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

Что также работает следующим образом:

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

Jup dude! ваш второй запрос работал как шарм! это мой первый раз на этих форумах, но вы, ребята, меня хорошо поняли! Я снова займусь серфингом! Думаю, я многому учусь от вас, ребята! Проблема решена;) – Parm

3

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

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

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

-2

Похоже, вы хотите что-то вроде

select distinct(BewonerId), Naam, Voornaam from table_name 
+0

downvote для неправильного синтаксиса –

+0

Этот код все равно будет работать; это просто не решение. SELECT DISTINCT a, b, c совпадает с SELECT DISTINCT (a), b, c. DISTINCT не является вызовом функции; это опция запроса. –

0

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

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

У меня возникла аналогичная проблема, и для меня решение использовало пункт GROUP BY. Так что в основном я сгруппировал все блоги с тем же названием, что и одна группа.

Синтаксис:

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

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

Смежные вопросы