sql >> データベース >  >> RDS >> Sqlserver

ジオメトリ タイプから X と Y でビューを生成

    ビューでこれを行うことはできないと思いますが、テーブル値のユーザー定義関数 (テーブルを返す関数) を作成して、必要なものを取得できます。

    この例では、

    として定義されたテーブルを使用します。
    CREATE TABLE GeoTable (GeomKey int, vector GEOMETRY)
    

    さまざまなジオメトリ タイプを格納します (以下にリンクした例では、POINT、MULTIPOINT、LINESTRING、および POLYGON を使用しました)。

    CREATE FUNCTION dbo.GetVertices()
    RETURNS @ret TABLE (GeomKey INT, X INT, Y INT, PointNo INT)
    AS
    BEGIN
        DECLARE @max INT
        SET @max = (SELECT MAX(vector.STNumPoints()) FROM GeoTable) 
    
        ;WITH Sequence(Number) AS
        (
            SELECT 1 AS Number
            UNION ALL
            SELECT Number + 1
            FROM Sequence
            WHERE Number < @max
        )
        INSERT INTO @ret 
        SELECT
            gt.GeomKey
            ,gt.vector.STPointN(nums.number).STX AS X
            ,gt.vector.STPointN(nums.number).STY AS Y
            ,nums.number AS PointNo
        FROM GeoTable gt, Sequence nums
        WHERE nums.number <= gt.vector.STNumPoints()
        RETURN
    END;
    

    サンプル SQL Fiddle を参照してください。 完全な実例については




    1. ランク、ユーザー名、ユーザーレコード数を取得するビューを作成します

    2. XMLパフォーマンスのヒント

    3. ErrorException:オーバーロードされたプロパティApp \ Answer ::$attributeの間接的な変更は効果がありません

    4. SQL Server 2008 でドロップされたストアド プロシージャ、関数、テーブルを取得する方法