sql >> Database >  >> RDS >> Sqlserver

Genereer weergave met X en Y van het type geometrie

Ik denk niet dat je dit in een view kunt doen, maar je kunt een door de gebruiker gedefinieerde functie met tabelwaarde maken (een functie die een tabel retourneert) om te krijgen wat je wilt.

In dit voorbeeld wordt een tabel gebruikt die is gedefinieerd als

CREATE TABLE GeoTable (GeomKey int, vector GEOMETRY)

waarin verschillende soorten geometrie zijn opgeslagen (in het voorbeeld dat ik hieronder heb gelinkt, heb ik POINT, MULTIPOINT, LINESTRING en POLYGON gebruikt).

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;

Zie deze voorbeeld SQL Fiddle voor een volledig werkend voorbeeld.




  1. Kolommen selecteren en ordenen die niet in Groupy By SQL-instructie staan ​​- Oracle

  2. hoe het psql-commando in cygwin in te stellen?

  3. Speciale tekens van Oracle

  4. Tabel-/rijvergrendelingen uitvoeren in Django