如何构造此Oracle SQL查询?

如何构造此Oracle SQL查询?,第1张

概述我在Oracle中编写一个sql查询,如下所示: SELECT * FROM ( SELECT testid, max(decode(name, 'longitude', stringvalue, NULL)) as longitude, max(decode(name, 'latitude', stringvalue, 我在Oracle中编写一个SQL查询,如下所示:

SELECT *   FROM ( SELECT testID,max(decode(name,'longitude',stringvalue,NulL)) as longitude,'latitude',NulL)) as latitude            FROM test_av            GROUP  BY testID        ) av  INNER JOIN (                   SELECT ID,((ACOS(                                 SIN(16.15074 * 3.141592653 / 180)                                  * SIN(latitude * 3.141592653 / 180)                                  + COS(16.15074 * 3.141592653 / 180)                                  * COS(latitude * 3.141592653 / 180)                                 * COS((-22.74426 - longitude)*3.141592653 / 180)                          )*6373)) as distance                    FROM test         ) t ON t.ID = av.testID  WHERE t.distance <= 100

当我执行此查询时,Oracle会说’经度无效标识符’.我试图访问子查询别名,但查询失败.

如何将一个子查询的“别名”访问到另一个子查询?

解决方法 如果我正确理解你想要做什么,你实际上并不需要INNER JOIN,因为你没有从测试中获取任何真实的信息,而这些信息还没有在test_av上.所以,你可以写:

SELECT *  FROM ( SELECT ID,longitude,latitude,((ACOS( SIN(16.15074 * 3.141592653 / 180)                        * SIN(latitude * 3.141592653 / 180)                        + COS(16.15074 * 3.141592653 / 180)                        * COS(latitude * 3.141592653 / 180)                        * COS((-22.74426 - longitude) * 3.141592653 / 180)                )*6373)) AS distance           FROM ( SELECT testID AS ID,NulL)) as latitude                    FROM test_av                   GROUP                      BY testID                )       ) WHERE distance <= 100;

如果你想明确地确保你只获得测试中存在的记录 – 也就是说,如果你在test_av中有没有测试父项的记录,并且你想要过滤那些 – 那么你可以在最里面处理子查询,在您的FROM test_av之后.

总结

以上是内存溢出为你收集整理的如何构造此Oracle SQL查询?全部内容,希望文章能够帮你解决如何构造此Oracle SQL查询?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1162921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存