convert an sql result having multiple rows to single row -
hi want convert sql result having multiple rows single row eg query
select samplesitename , altitude , latitude , longitude samplesite] samplesiteid in (select samplesiteid sample] projectid = 2453); returns below result
+-------------------------------+----------+-------------+-------------+ | samplesitename | altitude | latitude | longitude | +-------------------------------+----------+-------------+-------------+ | sava - jamena - 02 | 84 | 44.87833333 | 19.08916667 | | sava - jamena - 03 | 84 | 44.87833333 | 19.08916667 | | sava - jamena - 04 | 84 | 44.87833333 | 19.08916667 | | sava - sremska mitrovica - 02 | 80 | 44.96527778 | 19.60027778 | | sava - sremska mitrovica - 03 | 80 | 44.96527778 | 19.60027778 | | sava - sremska mitrovica - 04 | 80 | 44.96527778 | 19.60027778 | | sava - sabac - 01 | 79 | 44.77138889 | 19.70444444 | | sava - sabac - 02 | 79 | 44.77138889 | 19.70444444 | | sava - sabac - 03 | 79 | 44.77138889 | 19.70444444 | | sava - ostruznica - 02 | 78 | 44.72194444 | 20.30416667 | | sava - ostruznica - 03 | 78 | 44.72194444 | 20.30416667 | +-------------------------------+----------+-------------+-------------+ i want query return me me single row each combination of altitude, latitude , longitude. result want
+---------------------------------+----------+-------------+-------------+ | samplesitename | altitude | latitude | longitude | +---------------------------------+----------+-------------+-------------+ | sava - jamena - 02, | | | | | sava - jamena - 03, | | | | | sava - jamena - 04 | 84 | 44.87833333 | 19.08916667 | +---------------------------------+----------+-------------+-------------+ | sava - sremska mitrovica - 02, | | | | | sava - sremska mitrovica - 03, | | | | | sava - sremska mitrovica - 04 | 80 | 44.96527778 | 19.60027778 | +---------------------------------+----------+-------------+-------------+ | sava - sabac - 01, | | | | | sava - sabac - 02, | | | | | sava - sabac - 03 | 79 | 44.77138889 | 19.70444444 | +---------------------------------+----------+-------------+-------------+ | sava - ostruznica - 02 | | | | | ,sava - ostruznica - 03 | 78 | 44.72194444 | 20.30416667 | +---------------------------------+----------+-------------+-------------+ i want generic query provide me above result . appreciated
if understood structure properly, should that.
i tested on sql server did not indicate assumption.
select left(main.samplen,len(main.samplen)-1) "samplen", main.altitude,main.latitude,main.longitude ( select distinct st2.altitude,st2.latitude,st2.longitude, ( select st1.samplesitename + ',' [text()] dbo.samplesite st1 st1.altitude = st2.altitude , st1.latitude = st2.latitude , st1.longitude = st2.longitude , st1.samplesiteid in (select samplesiteid sample projectid=2453) order st1.altitude,st1.latitude,st1.longitude xml path ('') ) [samplen] dbo.samplesite st2 st2.samplesiteid in (select samplesiteid sample projectid=2453) ) [main] for full list of test, used this:
create table sample ( projectid int, samplesiteid int, ); create table samplesite ( samplesiteid int, samplesitename varchar(35), altitude int, latitude decimal(18,9), longitude decimal(18,9), projectid int ); insert sample values (2453, 1), (2453, 2), (2453, 3), (2453, 4), (2453, 5), (2453, 6), (2453, 7), (2453, 8), (2453, 9), (2453, 10), (2453, 11), (1234, 12); insert samplesite values (1, 'sava - jamena - 02', 84, 44.87833333 , 19.08916667 ,2453 ), (2, 'sava - jamena - 03', 84, 44.87833333 , 19.08916667 ,2453 ), (3, 'sava - jamena - 04', 84, 44.87833333 , 19.08916667 ,2453 ), (4, 'sava - sremska mitrovica - 02', 80 ,44.96527778,19.60027778 ,2453 ), (5, 'sava - sremska mitrovica - 03', 80 ,44.96527778,19.60027778 ,2453 ), (6, 'sava - sremska mitrovica - 04', 80 ,44.96527778,19.60027778 ,2453 ), (7, 'sava - sabac - 01', 79 , 44.77138889 ,19.70444444 ,2453 ), (8, 'sava - sabac - 02', 79 , 44.77138889 ,19.70444444 ,2453 ), (9, 'sava - sabac - 03', 79 , 44.77138889 ,19.70444444 ,2453 ), (10, 'sava - ostruznica - 02', 78 ,44.72194444 ,20.30416667 ,2453 ), (11, 'sava - ostruznica - 03', 78 ,44.72194444 ,20.30416667 ,2453 ), (12, 'sava - test - 04', 79 ,44.38822842 ,20.12345678 ,1234 ); select left(main.samplen,len(main.samplen)-1) "samplen", main.altitude,main.latitude,main.longitude ( select distinct st2.altitude,st2.latitude,st2.longitude, ( select st1.samplesitename + ',' [text()] dbo.samplesite st1 st1.altitude = st2.altitude , st1.latitude = st2.latitude , st1.longitude = st2.longitude , st1.samplesiteid in (select samplesiteid sample projectid=2453) order st1.altitude,st1.latitude,st1.longitude xml path ('') ) [samplen] dbo.samplesite st2 st2.samplesiteid in (select samplesiteid sample projectid=2453) ) [main]
Comments
Post a Comment