Tôi không nghĩ rằng bạn có thể làm điều này trong một chế độ xem nhưng bạn có thể tạo một hàm do người dùng xác định có giá trị bảng (một hàm trả về một bảng) để có được những gì bạn muốn.
Ví dụ này sử dụng một bảng được định nghĩa là
CREATE TABLE GeoTable (GeomKey int, vector GEOMETRY)
nơi lưu trữ các loại hình học khác nhau (trong ví dụ tôi liên kết bên dưới, tôi đã sử dụng POINT, MULTIPOINT, LINESTRING và 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;
Xem SQL Fiddle mẫu này để có một ví dụ làm việc hoàn chỉnh.