如何解决SQL 使用 select 语句添加建表 - 无插入操作
我需要使用select语句来组成表格
DECLARE @MetresPerMile FLOAT = 1609.344;
DECLARE @LOCStart1 GEOGRAPHY = GEOGRAPHY::Point(48.83000,-97.31000,4326)
DECLARE @LOCDest1 GEOGRAPHY = GEOGRAPHY::Point(48.83000,4326)
DECLARE @LOCStart2 GEOGRAPHY = GEOGRAPHY::Point(22.9230000,-94.5342000,4326)
DECLARE @LOCDest2 GEOGRAPHY = GEOGRAPHY::Point(22.9230000,4326)
SELECT
'1' [Start],'1' [Dest],@LOCStart1.Stdistance(@LOCDest1) / @MetresPerMile [distance],'2' [Start],'2' [Dest],@LOCStart2.Stdistance(@LOCDest1) / @MetresPerMile [distance];
我得到的结果是 6 列,我只需要 3 列:
解决方法
这会给你那个结果:
declare @MetresPerMile float = 1609.344;
declare @Points table (Id integer,Point geography);
insert into @Points (Id,Point)
values (1,GEOGRAPHY::Point(48.83000,-97.31000,4326)),(2,GEOGRAPHY::Point(22.9230000,-94.5342000,4326));
select Start.Id as Start,Dest.Id as Dest,Start.Point.STDistance(Dest.Point)/@MetresPerMile
from @Points as Start
cross join @Points as Dest
您可以在点表中添加任意数量的点,选择将返回所有点之间的距离。
你可以在这里看到它的工作:Fiddle
,感谢 Marc Guillot 的回答,这是否达到了您想要的结果?
declare @MetresPerMile float = 1609.344;
with Points as (
select *
from (values
(1,4326))
) pts (Id,Point)
)
select Start.Id as Start,Start.Point.STDistance(Dest.Point)/@MetresPerMile as Distance
from Points as Start
cross join Points as Dest
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。