sql >> Database teknologi >  >> RDS >> Sqlserver

Generer visning med X og Y fra geometritype

Jeg tror ikke, du kan gøre dette i en visning, men du kan oprette en brugerdefineret funktion med tabelværdi (en funktion, der returnerer en tabel) for at få det, du ønsker.

Dette eksempel bruger en tabel defineret som

CREATE TABLE GeoTable (GeomKey int, vector GEOMETRY)

som gemmer forskellige geometrityper (i eksemplet, jeg linkede til nedenfor, brugte jeg POINT, MULTIPOINT, LINESTRING og 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;

Se denne eksempel på SQL Fiddle for et komplet fungerende eksempel.




  1. Hvordan sletter jeg en af ​​mine to dublerede rækker af data i Postgres?

  2. Får PHP-fejl Advarsel:fputcsv() forventer, at parameter 2 er array

  3. Kan ikke gendanne en MYSQL-sikkerhedskopi til en ny database

  4. Sådan indsætter du json array i mysql database med php