sql >> Databáze >  >> RDS >> Sqlserver

Generujte pohled s X a Y z typu geometrie

Nemyslím si, že to můžete udělat v pohledu, ale můžete vytvořit uživatelsky definovanou funkci s tabulkovou hodnotou (funkci, která vrací tabulku), abyste získali to, co chcete.

Tento příklad používá tabulku definovanou jako

CREATE TABLE GeoTable (GeomKey int, vector GEOMETRY)

který ukládá různé typy geometrie (v příkladu, který jsem propojil níže, jsem použil POINT, MULTIPOINT, LINESTRING a 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;

Podívejte se na tento ukázkový SQL Fiddle pro kompletní funkční příklad.




  1. Chování MySQL GROUP BY

  2. Převod existující databáze MyISAM na InnoDB pomocí Django

  3. MySQL QUERY LIKE nevrací nic

  4. HTML::TableExtract:jak spustit správný argument [viz živý příklad]