このクエリを使用して、1つの列(BoekingPlaatsId列)から個別の値を選択します。
SELECT MAX(BoekingPlaatsId), BewonerId, Naam, VoorNaam
FROM table
GROUP BY BewonerId, Naam, VoorNaam
SQL Serverでこれを行うにはどうすればよいですか?
DISTINCT
は、ユーザー名だけが必要な場合に機能するはずです。
SELECT DISTINCT BewonerId, Naam, Voornaam
FROM TBL
ただし、最小ID値が必要な場合は、名前でグループ化します...
SELECT MIN(BoekingPlaatsId), MIN(BewonerId), Naam, Voornaam
FROM TBL
GROUP BY Naam, Voornaam
使えるはずだと思う
SELECT DISTINCT BewonerId, Naam, VoorNaam
次の理由により、BoekingPlaatsId
を追加できません。
DISTINCT
は一意の行を探しますBoekingPlaatsId
値を指定する必要がありますこれも機能します:
SELECT MAX(BoekingPlaatsId), BewonerId, Naam, VoorNaam
FROM ...
GROUP BY BewonerId, Naam, VoorNaam
私はこれをたくさんしませんので、構文を100%確信していませんので、少し微調整し、グーグルランクオーバーしてパーティションする必要があるかもしれません。これを試して...
SELECT
*,
RANK() OVER(PARTITION BY Naam order by Naam ) as Rank
FROM
TABLE
WHERE
Rank = 1
これは4列のテーブルではやり過ぎですが、多くの列を持つかなり非正規化されたテーブルがある場合、このアプローチは1列での個別選択には非常に役立ちます。
私は同様の問題に遭遇し、私にとって解決策はGROUP BY句を使用していました。基本的に、すべてのブログを1つのグループと同じタイトルでグループ化しました。
構文:
SELECT post_title, post_link
FROM blogs
WHERE [ conditions ]
GROUP BY post_title
ORDER BY post_title;
多分あなたは複数の列をグループ化しています
ちょうどそれらの2列でグループ化
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
あなたが探しているのは次のようなものだと思います:
select distinct column1 from table1 where column2 = (select distinct column2 from table1)
これは、列に一意の値のみを持つテーブルから選択する方法です。
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は必要ありません。