我有一些数据,我正在尝试选择每个具有良好lat长度的人,而且那些没有lat长度的数据是我的数据:
某些数据的纬度和长度为1和0的原因是因为他们的订单在发货前进入erp系统,我们希望在地图中看到这些订单的半径。所以我们希望事实进入事实表,即使我们可能或可能没有这个客户的纬度或长度。
基本上,如果我有一个像josh Deshazer这样的客户,并且他有两个重复的行,因为他进入系统时没有一个lat而且很长时间他最终得到一个lat而且记录很长我想要只选择好的lat记录然后,如果我有一个像mike davis这样的客户,即使他没有一个好的lat和很长的我仍然想在查询中选择他所有
基本上我会想要josh Deshazer 14.5和12.2以及ken johnson只有-93和45以及mike davis和1和0都在一个查询中。感谢任何人的帮助,请接受任何有关此事的建议。
答案 0 :(得分:1)
您可以使用ROW_NUMBER FUNCTION
实现此目的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
答案 1 :(得分:0)
试试这个:
(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));