微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL 使用 select 语句添加建表 - 无插入操作

如何解决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 列:

enter image description here

解决方法

这会给你那个结果:

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 举报,一经查实,本站将立刻删除。