我想用这个查询从一列(BoekingPlaatsId列)中选择不同的值:
SELECT MAX(BoekingPlaatsId), BewonerId, Naam, VoorNaam
FROM table
GROUP BY BewonerId, Naam, VoorNaam
我如何在SQL Server中执行此操作?
答案 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