Columna de tipo de datos SQL Geography en cláusula GROUP BY

Estoy usando SQL Server y estoy creando una secuencia de commands que sacará la location geográfica de los trabajadores de mi database. El script está abajo.

SELECT w.display_name, w.geo_location FROM jobs j WITH(NOLOCK) INNER JOIN workers w WITH(NOLOCK) ON w.worker_id = j.worker_id WHERE ..... 

El problema es que quiero agregar GROUP BY w.display_name, w.geo_location al script, ya que se muestran loggings duplicates. Se agregó una columna con la geografía de tipo de datos a una cláusula group by por la que se genera un error.

El error que se produce cuando agrego esto es:

El tipo "geografía" no es comparable. No se puede usar en la cláusula GROUP BY.

¿Hay alguna forma de evitar esto? No puedo convertir w.geo_location en un VARCHAR ya que es necesario en el tipo de datos geocharts.

Puedes usar row_number() algo como esto.

 declare @g geography; set @g = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326); declare @T table (display_name varchar(10), geo_location geography) insert into @T values ('1', @g) insert into @T values ('1', @g) insert into @T values ('1', @g) insert into @T values ('2', @g) insert into @T values ('2', @g) select display_name, geo_location from ( select *, row_number() over(partition by display_name, geo_location.ToString() order by (select 0)) as rn from @T ) as T where rn = 1 

Resultado:

 display_name geo_location ------------ -------------------------------------------------------------------------------- 1 0xE610000001148716D9CEF7D34740D7A3703D0A975EC08716D9CEF7D34740CBA145B6F3955EC0 2 0xE610000001148716D9CEF7D34740D7A3703D0A975EC08716D9CEF7D34740CBA145B6F3955EC0 

Si desea continuar utilizando el grupo por syntax, puede convertir la columna geográfica en text y viceversa:

 SELECT w.display_name, geography::STGeomFromText(w.geo_location.STAsText(), 4326) as Location FROM jobs j WITH(NOLOCK) INNER JOIN workers w WITH(NOLOCK) ON w.worker_id = j.worker_id WHERE ..... GROUP BY w.display_name, w.geo_location.STAsText()