【发布时间】:2011-11-01 13:16:31
【问题描述】:
我试图一次从一张表中获取 2 行。上周的最短日期时间(今天 - 7)和最新的(今天)。
我的桌子:
|id |dataIn |dataOut|date |MachineId |
-----+-------+-------+-----------------------+-------------------------------------+
|1 |5006 |58 |2011-10-25 09:03:17.000|7B788EE88E-6527-4CB4-AA4D-01B7F4048559
|2 |1200 |130 |2011-10-26 12:45:43.000|7B788EE88E-6527-4CB4-AA4D-01B7F4048559
...
|124 |1350 |480 |2011-10-29 13:29:04.000|7B788EE88E-6527-4CB4-AA4D-01B7F4048559
|125 |8005 |560 |2011-10-31 21:18:35.000|7B788EE88E-6527-4CB4-AA4D-01B7F4048559
我可以选择上周的数据:
SELECT
dbo.myDatabase.Date AS [date], dbo.myDatabase.dataIn AS [in],
dbo.myDatabase.dataOut AS [out]
FROM
dbo.myDatabase WHERE
Date >=dateadd(day,datediff(day,0,GetDate())- 7,0)
AND
dbo.myDatabase.MachineId = '7B788EE88E-6527-4CB4-AA4D-01B7F4048559'
但我只想要第 1 行和第 125 行,因为这些行用于我的计算。
所以我的问题是:
如何从上一个查询的结果中选择 2 行(具有 MIN 和 MAX 日期)?
【问题讨论】:
-
最小或最大日期可能不止一行。那你想做什么?
-
日期/时间戳是否与明显的自动增量 ID 列直接相关???
-
@TimRogers 否。每台机器在有变化时插入一行带有日期时间的行,因此它是唯一的/机器
-
@DRapp 没有相关性。我只是想做的是获得一周的总 IN 和总 Out,这是过去 7 天内第一行和最后一行的 dataIn/dataOut 之间的差异。
标签: sql