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.