我有一张街道代码和县代码表。我只需选择这两列相同的所有行中的最新行(按创建日期排序)。
例如。
这里仅应选择最后一行,因为它具有创建的最新日期,其中Kommunekode和Vejkode相同。
如何过滤我的select语句以允许这种逻辑?我尝试使用distinct关键字,但这没有考虑创建日期。
我当前的视图代码:
SELECT
Infohub_RowId,
Infohub_CreatedDate,
Id,
Sekvensnummer,
Tidspunkt,
Operation,
Kommunekode,
Vejkode,
Oprettet,
Aendret,
Navn,
Vejnavn,
Navngivenvej_id,
Aendret AS Infohub_ValidityDate
FROM (
SELECT
Infohub_RowId,
Infohub_CreatedDate,
Sekvensnummer,
Tidspunkt,
Operation,
Id,
Kommunekode,
Vejkode,
Oprettet,
Aendret,
Navn,
Vejnavn,
Navngivenvej_id,
ROW_NUMBER() OVER(PARTITION BY Id ORDER BY Aendret DESC) AS RowNum
FROM
Dawa.tDelta_Vejstykke) AS x
WHERE x.RowNum = 1
视图应通过选择最新的重复记录来“清理”数据。
答案 0 :(得分:1)
依次使用WITH VTE AS (
SELECT 564843530 AS SomeNumber),
Split AS(
SELECT V.SomeNumber,
NG.token,
NG.position
FROM VTE V
CROSS APPLY dbo.NGrams8k(V.SomeNumber,1) NG)
SELECT SomeNumber AS OldNumber,,
CONVERT(bigint,(SELECT token + 3
FROM Split x
WHERE S.SomeNumber = x.SomeNumber
ORDER BY x.position
FOR XML PATH(''))) AS NewNumber
FROM Split S
GROUP BY S.SomeNumber;
和by Infohub_CreatedDate
这两个列,分区依据
Kommunekode,Vejkode
答案 1 :(得分:1)
您想要row_number()
,但Kommunekode, Vejkode
应该在partition
子句中:
SELECT t.*
FROM (SELECT t.*,
ROW_NUMBER() OVER (PARTITION BY Kommunekode, Vejkode ORDER BY Infohub_CreatedDate DESC) AS Seq
FROM Dawa.tDelta_Vejstykke t
) t
WHERE Seq = 1;