Как PIVOT данные из одного столбца в два - PullRequest
1 голос
/ 03 февраля 2020

У меня есть запрос в SQL с этими результатами, и я пытаюсь свести их в два столбца отдельно:

ID          Lat/Long     Geocoding

 1           Lat          27.4996954
 2           Lat          39.4236405
 3           Lat          40.4483913
 4           Long         -76.9341023
 5           Long         -81.0817888
 6           Long         -95.5968665
 .           .            .
 .           .            .
350          Lat          33.9760517

Мои желаемые результаты:

  ID         Lat          Long

   1       40.4483913     -97.303731
   .          .             .
   .          .             .
   .          .             .
 350       33.9760517      -81.0817888 

1 Ответ

0 голосов
/ 03 февраля 2020

Запрос

Я должен был предположить, что вы будете соединять long и lat, используя столбец ID.

Простое соединение с условием where может решить эту проблему.

SELECT dlat.id, dlat.geocoding AS lat,
       dlong.geocoding AS lon
FROM geodata dlat inner join geodata dlong
ON  dlat.id = dlong.id     
WHERE
  dlat.latlong='lat'
  AND dlong.latlong='long';    

Скрипка: https://www.db-fiddle.com/f/vSzZ4YPJC3NTewoE4k7t8z/1

DDL

create table geodata(
id integer,
latlong varchar(5),
geocoding float);

insert into geodata values( 1   ,   'Lat',  27.4996954  );
insert into geodata values( 2   ,   'Lat',  39.4236405  );
insert into geodata values( 3   ,   'Lat',  40.4483913  );
insert into geodata values( 4   ,   'Lat',  -76.9341023 );
insert into geodata values( 5   ,   'Lat',  -81.0817888 );
insert into geodata values( 6   ,   'Lat',  -95.5968665 );

insert into geodata values( 1   ,   'Long', 47.4996954  );
insert into geodata values( 2   ,   'Long', 59.4236405  );
insert into geodata values( 3   ,   'Long', 60.4483913  );
insert into geodata values( 4   ,   'Long', -56.9341023 );
insert into geodata values( 5   ,   'Long', -61.0817888 );
insert into geodata values( 6   ,   'Long', -75.5968665 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...