I次の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
と言っています(私は郵便番号へのすべてのbikpathsのための別のリストを持っています)。
これはSELECT
statemementだった場合、それは...
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ごとに1つの行を取得することを確認する
TOP 1
WHERE RowNumber = 1
を追加することができますが...これその自転車の道がほとんど/交差に含まれている郵便番号を持っています。
私は2番目のSQLステートメントが毛並みを帯びていることを知っていますが、そのGeo-Spatialのものが追加されましたが、誰かがこれをUPDATE
ステートメントに組み込むのを手伝ってくれますか?
CTE's? Wtf!私はこれを前に与えた後、いくつかの答えでそれらを知ってはいけません:) –
+1共通の表の表現のため – VoodooChild
Awesomesauce。 CTEを完全に忘れてしまった - 私はいつもそれらが存在するのを忘れる。そしてSAにようこそ:)いくつかの点を持って:)(ああ、私はまた、セミコロンに気付きました。それを追加してください...それは年齢のために私を台無しにした原因:PIは 'CTEステートメント '。 –