Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Generuj widok z X i Y z typu geometrii

Nie sądzę, że możesz to zrobić w widoku, ale możesz utworzyć funkcję zdefiniowaną przez użytkownika o wartości tabeli (funkcję, która zwraca tabelę), aby uzyskać to, czego chcesz.

W tym przykładzie użyto tabeli zdefiniowanej jako

CREATE TABLE GeoTable (GeomKey int, vector GEOMETRY)

który przechowuje różne typy geometrii (w przykładzie, który połączyłem poniżej, użyłem PUNKT, WIELOPUNKT, LINESTRING i WIELOKĄT).

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;

Zobacz to przykładowe skrzypce SQL dla kompletnego przykładu pracy.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ustawić limit czasu CmdExec zadania SQL Server 2005?

  2. Bazy danych systemu SQL Server – Konserwacja MSDB

  3. Korzystanie z bootstrap modalpopup w ASP.NET

  4. Konwersja daty i kultura:różnica między DATE a DATETIME

  5. Użycie tymczasowych funkcji lub procedur w skrypcie