나는 다음과 같은 SQL 문을 가지고 - 우리의 자전거 도로가 교차하는 모든 된 우편 번호를 찾을하려고 : -SQL UPDATE 문에 TOP 1과 PARTITION BY를 어떻게 추가 할 수 있습니까?
자전거 경로는을 발생하는 (두 개 이상의 된 우편 번호를 교차하지 않는 ... 괜찮UPDATE a
SET a.ZipCodeId = d.ZipCodeId
FROM [dbo].[BikePaths] a
INNER JOIN [dbo].[BikePathBoundaries] b ON b.ZipCodeId = c.ZipCodeId
INNER JOIN [dbo].[ZipCodeBoundaries] c ON b.Boundary.STIntersects(c.Boundary) = 1
제비). 그래서 저는 Get the zipcode which this bikepath MOSTLY intersects
라고 말하고 싶습니다. (필자는 우편 번호에 대한 모든 bikpath를 다른 곳에서 가지고 있습니다). 이것은 SELECT
statemement 이었다면
하는
TOP 1
WHERE RowNumber = 1
하기 위해이 ...
SELECT a.BikePathId, a.BikePathName, c.ZipCodeId, d.ZipCode,
c.Boundary.STIntersection(d.Boundary).STArea() AS Area,
ROW_NUMBER() OVER (PARTITION BY a.BikePathId ORDER BY c.Boundary.STIntersection(d.Boundary).STArea() DESC) AS RowNumber
FROM [dbo].[BikePaths] a
INNER JOIN [dbo].[BikePathBoundaries] b on a.BikePathId = b.BikePathId
INNER JOIN [dbo].[ZipCodeBoundaries] c on b.Boundary.STIntersects(c.Boundary) = 1
INNER JOIN [dbo].[ZipCodes] d on c.ZipCodeId = d.ZipCodeId
을 다음과 같이 보일 것입니다 그리고 난 그냥 추가 할 수 있습니다 내가 BikePath 당 하나의 행 ..를 얻을 수 있는지 확인하는 해당 자전거 경로가 대부분/내부에 포함 된 우편 번호를 갖습니다.
두 번째 SQL 문이 털이 많아서 Geo-Spatial 항목이 추가 된 것을 알고 있습니다. 그러나 누군가이를 UPDATE
문에 통합하는 데 도움이 될 수 있습니까?
CTE 's? Wtf! 모르겠다 ... 내가 전에 준 후 몇 가지 해답을 가진 브래지어 :) –
+1 공통 테이블 식 – VoodooChild
Awesomesauce. CTE에 대해 완전히 잊어 버렸습니다. 그리고 SA에 오신 것을 환영합니다 :) 몇 가지 점을 말하자면 :) (오, 나는 또한 세미콜론을 처음에 알아 챘습니다. 그게 .. 나이를 망쳐 놓은 원인이되었습니다. PI는 또한 CTE의 끝에 추가했습니다. 성명'. –