繁体   English   中英

如果时间范围内未包含该时间范围内的数据,如何从数据库中获取数据?

[英]How to get data from database in time range if it's not contained before the time range?

我有一个表,其中包含一些数据,例如:

  • 产品编号
  • 运作方式
  • 日期
  • 结果(确定或否)。

我想设定一个时间范围。 在此时间范围内,我想按日期获取所有产品ID的第一个结果。

之后,我想检查整个表(也超出了时间范围),是否有那些PID-Operation-Result“数据包”的较早测试结果,我从所选时间范围得到了什么。 我应该怎么做?

您可以使用类似此查询的内容

SELECT * FROM YOUR_TABLE WHERE Date Between '01/01/2016' and '10/06/2016'

您想为每个PID选择一个记录,最旧的。 但是,如果不在时间范围内,即使一个ID有多个结果,您也要获得所有结果? 那是对的吗?

假设您正在使用SQL Server,则可以使用排名函数:

WITH CTE AS
(
    SELECT [Product ID],
           [Operation],
           [Date],
           [Result],
           RN = ROW_NUMBER() OVER (PARTITION BY [Product ID] ORDER BY [Date])
   FROM dbo.TableName
)
SELECT [Product ID], [Operation], [Date], [Result]
FROM CTE
WHERE RN = 1 OR [Date] NOT BETWEEN @BeginRange AND @EndRange

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM