我有一个问题:
SELECT
Segment_ID = Segment_ID.Segment_ID,
Sprav_093.Name as Road_Wear
FROM dbo.Road
LEFT JOIN Segment_ID ON Road.Road_ID = Segment_ID.Road_ID
LEFT JOIN Driveway_Pavement ON Segment_ID.Segment_ID = Driveway_Pavement.Segment_ID
LEFT JOIN Sprav_093 ON Driveway_Pavement.Kod_Spr093 = Sprav_093.Kod_Spr
Run Code Online (Sandbox Code Playgroud)
工作正常.有几个行与同一Segment_ID表Driveway_Pavement.所以我想要获得这些行中的第一行.我该怎么做?
假设您要为每个段ID返回一行,请执行此操作
;WITh CTE AS (
SELECT
Segment_ID = Segment_ID.Segment_ID,
Sprav_093.Name as Road_Wear,
CASE WHEN Sprav_093.Name IS NOT NULL THEN
ROW_NUMBER() OVER (PARTITION BY Segment_ID.Segment_ID
ORDER BY Sprav_093.Name//or date column)
ELSE 1 END rn
FROM dbo.Road
LEFT JOIN Segment_ID ON Road.Road_ID = Segment_ID.Road_ID
LEFT JOIN Driveway_Pavement ON Segment_ID.Segment_ID = Driveway_Pavement.Segment_ID
LEFT JOIN Sprav_093 ON Driveway_Pavement.Kod_Spr093 = Sprav_093.Kod_Spr
)
SELECT * FROM CTE WHERE RN = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |