从1列中选择不同的值

时间:2009-12-16 23:30:55

标签: sql sql-server sql-server-2005 distinct

我想用这个查询从一列(BoekingPlaatsId列)中选择不同的值:

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

我如何在SQL Server中执行此操作?

9 个答案:

答案 0 :(得分:18)

如果您只想要用户名,

DISTINCT应该有用:

SELECT DISTINCT BewonerId, Naam, Voornaam
FROM TBL

但如果您需要最小ID值,请按名称分组......

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

答案 1 :(得分:7)

我认为你应该可以使用

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

答案 2 :(得分:5)

我没有做很多这样的事情,所以我不是100%确定语法,所以你可能需要稍微调整一下,google排名和分区。试试这个......

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

这对于4列表来说是过度的,但是如果你有一个包含很多列的相当非规范化的表,这种方法对于1列上的select distinct是非常宝贵的。

答案 3 :(得分:0)

只按这两列

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

答案 4 :(得分:0)

select Naam, Voornaam, min(BewonerId), min(BoekingPlaatsId) from tableName
group by Naam, Voornaam

答案 5 :(得分:0)

我认为你所寻找的是这样的:

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

答案 6 :(得分: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 

您不需要group by来完成此任务。

答案 7 :(得分:0)

我遇到了类似的问题,对我来说,解决方案是使用 GROUP BY 子句。 所以基本上,我将所有博客与同一个标题归为一组。

语法:

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

也许您正在对多个列进行分组

答案 8 :(得分:-2)

听起来像是想要像

这样的东西
select distinct(BewonerId), Naam, Voornaam from table_name