1

Teradata クエリ

select F.farm_id, F.name, CASE WHEN geography.ST_GeometryType() = 'ST_POINT' THEN geography.ST_X() ELSE geography.ST_Centroid().ST_X() END as LNG, CASE WHEN geography.ST_GeometryType() = 'ST_POINT' THEN geography.ST_Y() ELSE geography.ST_Centroid().ST_Y() END as LAT from V_farm F, V_farm_workforce FW where F.farm_id=FW.farm_id and FW.account_id='bf064695-b9e3-46a2-a665-0bb794073ae3' and geography is not null

Teradata で上記のクエリを実行しているときに、応答を下回る

FarmId                                           Name                  LNG                        LAT
-----------------------------------------------------------------------------------------------------------
ea66e27f-eba4-4750-bd85-2a1e96941b10             Farm099               -88.9495943               33.5847365
2be7e35e-74a7-49eb-9e9d-5b65dbbf7c5e             VFarmJuly23           -106.6409198              31.8018379
56982275-bcad-40f7-83db-5dbfd9f9c82c             Farm112               -88.95096260000003        33.601958

H2で実行すると同じクエリがエラーを下回ります

Function "ST_GEOMETRYTYPE" not found; SQL statement:

H2データベースで行う方法を教えてください。

4

1 に答える 1

1

H2 データベースは、Geometry タイプのみを格納およびクエリできます。

H2 データベースの空間関数は、H2GISライブラリで利用できます。このライブラリは、H2 データベースの空間拡張です。OGC のすべての SQL 標準用の単純な機能を提供します。

このクエリでも同じ結果が得られるはずです

select F.farm_id, F.name, ST_X(ST_CENTROID(THE_GEOM)) as LNG,
 ST_Y(ST_CENTROID(THE_GEOM)) as LAT 
 from V_farm F, V_farm_workforce FW 
 where F.farm_id=FW.farm_id 
  and FW.account_id='bf064695-b9e3-46a2-a665-0bb794073ae3'
  and the_geom is not null

ポイントのST_CENTROIDは、ポイント自体を返します。

于 2015-11-25T10:49:56.143 に答える