正在尝试从SQL Server获取具有lat和long的行

正在尝试从SQL Server获取具有lat和long的行,sql,sql-server,Sql,Sql Server,我有一些数据,我正在尝试选择每个具有良好lat-long的人,并且下面没有lat-long的人是我的数据: 某些数据的lat和long值为1和0的原因是,他们的订单在发货前进入erp系统,我们希望在地图中看到这些订单的半径。因此,我们希望事实进入事实表,即使我们可能有或可能没有对该客户的lat或long 基本上,如果我有一个像josh Deshazer这样的客户,他有两个重复的行,因为他进入系统时没有lat和long,最终他的记录上有一个lat和long,我只想选择具有良好lat和long的记录

我有一些数据,我正在尝试选择每个具有良好lat-long的人,并且下面没有lat-long的人是我的数据:

某些数据的lat和long值为1和0的原因是,他们的订单在发货前进入erp系统,我们希望在地图中看到这些订单的半径。因此,我们希望事实进入事实表,即使我们可能有或可能没有对该客户的lat或long

基本上,如果我有一个像josh Deshazer这样的客户,他有两个重复的行,因为他进入系统时没有lat和long,最终他的记录上有一个lat和long,我只想选择具有良好lat和long的记录,然后,如果我有一个像迈克·戴维斯这样的客户,即使他没有一个好的lat和long,我仍然希望在查询中全部选择他


基本上,我希望josh Deshazer 14.5和12.2,ken johnson只有-93和45,而mike davis只有1和0。谢谢任何人对我的帮助,我愿意接受任何建议。这件事真让我受不了

您可以通过使用行数函数来实现这一点

SELECT
       Long,Lat,FirstName,lastName,OrderNumber FROM
    (
        SELECT Long,Lat,FirstName,lastName,OrderNumber,
            ROW_NUMBER() OVER (PARTITION BY Long,Lat ORDER BY Long,Lat  ) rn
        FROM #TMP 
    ) t
    WHERE t.rn = 1
    ORDER BY FirstName,lastName
试试这个:

(SELECT long, Lat, FirstName, LastName, OrderAmount, OrderNumber    
FROM
your_table
WHERE OrderNumber IN (SELECT OrderNumber FROM your_table GROUP BY OrderNumber HAVING COUNT(*) > 1)
AND (long <> 1 AND Lat <> 0))   --Conditions in this line can be tweaked based on how your definition of bad lat/long works
UNION ALL   
(SELECT long, Lat, FirstName, LastName, OrderAmount, OrderNumber    
FROM
your_table
WHERE OrderNumber IN (SELECT OrderNumber FROM your_table GROUP BY OrderNumber HAVING COUNT(*) = 1));

对于所有具有正确lat/long的重复条目的记录,lat和long是否为1和0?@JoshuaDeshazer Welcome