Ich habe die folgende SQL-Anweisung - sie alle zipcodes zu finden versucht, die unsere Radwege, schneiden: -Wie kann ich eine TOP 1 und eine PARTITION BY in einer Sql UPDATE-Anweisung hinzufügen?
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
was in Ordnung ist ... es sei denn, ein Radweg zwei oder mehr zipcodes schneidet (das ist ein geschieht Menge). Also, ich möchte sagen, Get the zipcode which this bikepath MOSTLY intersects
(Ich habe eine andere Liste an anderer Stelle für alle bikpaths zu Postleitzahlen).
Wenn dies ist ein SELECT
statemement, wäre es etwa so aussehen ...
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
und dann kann ich nur ein
TOP 1
WHERE RowNumber = 1
hinzufügen, um sicherzustellen, ich eine Zeile pro Bikepath bekommen .. was wird die Postleitzahl haben, in der sich der Radweg meistens befindet/kreuzt.
Ich weiß, dass 2nd Sql-Anweisung haarig aussieht, mit dem Geo-Spatial Zeug hinzugefügt .. aber kann mir jemand helfen mit der Aufnahme dieser in eine UPDATE
Aussage?
CTE's? Wtf! Kenne diese nicht ... brb mit ein paar Antworten, nachdem ich dies hergegeben habe :) –
+1 für gemeinsame Tabelle Ausdruck – VoodooChild
Awesomesauce. Ich habe CTE total vergessen - ich vergesse immer, dass es sie gibt. Und willkommen in SA :) Habe ein paar Punkte :) (Oh, ich habe auch das Semikolon am Start bemerkt. Gut gemacht, dass das hinzugefügt wurde. Denn das hat mich schon ewig durcheinander gebracht: PI hat es auch am Ende des 'CTE' hinzugefügt Aussage ". –