簡體   English   中英

“地理位置”類型不可比。 不能在GROUP BY子句中使用

[英]The type “geography” is not comparable. It cannot be used in the GROUP BY clause

我有這樣的查詢:

SELECT WorkId, 
RegisterDate , Location

FROM (

SELECT dbo.[Work].WorkId ,
dbo.[Work].RegisterDate , dbo.Look.Location

FROM dbo.Municipality INNER JOIN
dbo.[Work] ON dbo.Municipality .Municipality Id = dbo.[Work].MunicipalityWorkId INNER JOIN
dbo.Look ON dbo.[Work].LookWorkId = dbo.Look.LookId
WHERE (dbo.Look.Location IS NOT NULL) AND Type= 1

) E

GROUP BY WorkId ,RegisterDate , Location

我得到這個錯誤:

類型“地理位置”不可比較。 不能在GROUP BY子句中使用它。

我需要將位置添加到分組依據,因為我需要在數據庫中顯示位置。 對於這種情況有什么解決方案? 謝謝。

這是一種方法。

使用StastextLocation轉換為文本,並使用Group by 然后使用STGeomFromText將其轉換回Select geo

SELECT WorkId,
       RegisterDate,
       geography::STGeomFromText(Location.STAsText(), 4326)
FROM   (SELECT dbo.[Work].WorkId,
               dbo.[Work].RegisterDate,
               dbo.Look.Location
        FROM   dbo.Municipality
               INNER JOIN dbo.[Work]
                       ON dbo.Municipality.MunicipalityId = dbo.[Work].MunicipalityWorkId
               INNER JOIN dbo.Look
                       ON dbo.[Work].LookWorkId = dbo.Look.LookId
        WHERE  ( dbo.Look.Location IS NOT NULL )
               AND Type = 1) E
GROUP  BY WorkId,
          RegisterDate,
          Location.STAsText() 

從這個答案引用

注意:地理功能區分大小寫 ,應按原樣使用

  • STGeomFromText

  • STAsText

您未使用求和或計數之類的聚合函數,因此可以避免分組和排序

SELECT 
    WorkId
  , RegisterDate 
  , Location

FROM (
    SELECT 
          dbo.[Work].WorkId 
        , dbo.[Work].RegisterDate 
        , dbo.Look.Location
    FROM dbo.Municipality 
    INNER JOIN dbo.[Work] ON dbo.Municipality.Municipality Id = dbo.[Work].MunicipalityWorkId 
    INNER JOIN dbo.Look ON dbo.[Work].LookWorkId = dbo.Look.LookId
WHERE (dbo.Look.Location IS NOT NULL) AND Type= 1
ORDER  BY WorkId ,RegisterDate , Location
) E

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM