Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Генериране на изглед с X и Y от геометричен тип

Не мисля, че можете да направите това в изглед, но можете да създадете дефинирана от потребителя функция с таблична стойност (функция, която връща таблица), за да получите това, което искате.

Този пример използва таблица, дефинирана като

CREATE TABLE GeoTable (GeomKey int, vector GEOMETRY)

който съхранява различни типове геометрия (в примера, който свързах по-долу, използвах ТОЧКА, МНОГОТОЧКИ, ЛИНИЯ и МНОГОГОЛ).

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свързване към именуван екземпляр на SQL Server 2008 от класически ASP

  2. Driver.getConnection виси с помощта на драйвер на SQLServer и Java 1.6.0_29

  3. Какво представляват ограниченията на базата данни?

  4. Пропускане на редове при импортиране на Excel в SQL с помощта на SSIS 2008

  5. sql заявка със самостоятелно присъединяване