Saya tidak berpikir Anda dapat melakukan ini dalam tampilan tetapi Anda dapat membuat fungsi yang ditentukan pengguna bernilai tabel (fungsi yang mengembalikan tabel) untuk mendapatkan apa yang Anda inginkan.
Contoh ini menggunakan tabel yang didefinisikan sebagai
CREATE TABLE GeoTable (GeomKey int, vector GEOMETRY)
yang menyimpan berbagai jenis geometri (dalam contoh yang saya tautkan di bawah ini, saya menggunakan POINT, MULTIPOINT, LINESTRING, dan 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;
Lihat contoh SQL Fiddle ini untuk contoh kerja yang lengkap.