当前位置: 首页 > 面试题库 >

在一列上选择DISTINCT,返回其他多列(SQL Server)

王季萌
2023-03-14
问题内容

我正在尝试编写一个查询,该查询从GPSReport表返回每个唯一设备的最新GPS位置。表中有50个设备,所以我只希望返回50行。

这是我到目前为止(无法正常工作)

SELECT TOP(SELECT COUNT(DISTINCT device_serial) FROM GPSReport) * FROM GPSReport AS G1
RIGHT JOIN
(SELECT DISTINCT device_serial FROM GPSReport) AS G2
ON G2.device_serial = G1.device_serial
ORDER BY G2.device_serial, G1.datetime DESC

这将返回50行,但不会为每个device_serial返回唯一的行。它返回第一个设备的所有报告,然后返回第二个设备的所有报告,依此类推。

我要在一个查询中执行的操作是否可行?


问题答案:
SELECT * FROM
GPSReport AS G1
JOIN (SELECT device_serial, max(datetime) as mostrecent 
      FROM GPSReport group by device_serial) AS G2
ON G2.device_serial = G1.device_serial and g2.mostrecent = g1.datetime
ORDER BY G1.device_serial


 类似资料:
  • 问题内容: 我想从列中选择结果,但我需要相应的和。 结果集只需要显示一个,但显示为1且a 为Doe。 问题答案: 试试这个查询

  • 问题内容: 我有一张桌子,看起来像这样: 我试图做一个SELECT命令,结果是这样的: 因此,我需要唯一的名称,但选择所有四个列,其中Col1 =2。我在这里使用解决方案来使唯一的部分正常工作: SQL / mysql- 选择唯一/唯一,但返回所有列? 但是,当我向select语句的WHERE部分添加add时,它不会返回Col1为2的所有名称,因为我认为它首先查找的是一个不同的数字,而不是1,因此

  • 问题内容: 我需要从合并了2列的表中检索所有行。因此,我希望所有在同一天以相同价格进行的销售都没有其他任何销售。基于日期和价格的唯一销售将更新为活动状态。 所以我在想: 但是我的大脑比这更痛。 问题答案: 是 大致 等效于: 习惯GROUP BY语法是一个好主意,因为它更强大。 对于您的查询,我会这样做:

  • 问题内容: 有3列:,, 如何将where的所有值都等于某个值,然后按进行排序,但不同的结果显示其对应的值呢? 我尝试了以下操作,但没有成功: 上述结果不会导致的不同值。如果我删除“ ”,则它将显示的不同值,但不会显示其相应的值。 那我该怎么办呢? 问题答案: 也许是这样的: ? 您可以在此SQL Fiddle中使用它。

  • 问题内容: 我目前有一张看起来像这样的表: 我需要做的是获得“ 费率”列的信息,但每个名称仅获得一次。例如,我有三行John Doe,每行的比率为8。我需要将这些行的比率设为8,而不是24,因此它为每组名称都对比率进行一次计数。 当然是行不通的,因为我试图对比率列而不是名称求和。我知道在对单个记录进行计数时,我可以使用,这就是我试图从中得到的行为类型。 我怎样才能为每个名字获得一个比率? 提前致谢

  • 问题内容: 我想在数据库中选择不同的值。让我来看一个简单的例子。 表: 是的,假设我的SQL是。这些是我的结果: 但是,问题在于/ 重复的顺序不同。我不想选择这些,我希望这两列中都有不同的值,请帮忙! 问题答案: 非常邪恶和邪恶: