SQL:查找日期范围内

时间:2018-01-03 23:58:28

标签: sql

架构: ID,int(PK) datSample,datetime fltValue,float

我有一张示例数据表。

有时不会捕获样本值,并且记录的fltValue = NULL将被标记为无效。

我需要在以下日期范围内运行报告{datRptStart,datRptEnd}

我必须提取&显示{datRptStart,datRptEnd}范围内的第一个和最后一个VALID datSample日期时间。

我需要在报告中显示/绘制有效值和无效值

示例数据:

enter image description here

4 个答案:

答案 0 :(得分:0)

这是通用SQL,用您的表名替换tablename。你用的是什么数据库?在与oracle合作之间,对于其他数据库,您可能需要使用> =和< =

Select ID,datSample, fltValue from tablename where
datSample between datRptStart and datRptEnd
order by datSample

答案 1 :(得分:0)

范围内的第一个ValidDate

SELECT TOP 1 datSample 来自tblTankLevel WHERE datSample> ='2018-01-01'AND        datSample< ='2018-01-10'和        fltSample不是NULL ORDER BY datSample ASC

范围

中的最后一个ValidDate

SELECT TOP 1 datSample 来自tblTankLevel WHERE datSample> ='2018-01-01'AND        datSample< ='2018-01-10'和        fltSample不是NULL ORDER BY datSample DESC

答案 2 :(得分:0)

SELECT * FROM tblTankLevel
WHERE ID >= (SELECT MIN(ID) AS minId
             FROM tblTankLevel
             WHERE datSample > @datRptStart 
             AND datSample < @datRptEnd
             AND fltSample IS NOT NULL)
AND ID <= (SELECT MAX(ID) AS maxId
           FROM tblTankLevel
           WHERE datSample > @datRptStart AND datSample < @datRptEnd
           AND fltSample IS NOT NULL)

答案 3 :(得分:0)

  

我必须提取&amp;显示{datRptStart,datRptEnd}范围内的第一个和最后一个VALID datSample日期时间。

这可以通过all all来完成 - 使用all,因为我们不知道这里的完整数据集。假设datRptStart和datRptEnd存储在另一个可访问的表中,您可以执行以下操作:

select
    'first'           as position
   ,sd.id             as id
   ,min(sd.datsample) as datsample
   ,sd.fltsample      as fltsample
from
    sampledata sd
where
    sd.fltsample between (select datRptStart from tab) and (select datRptEnd from tab)
group by
    sd.id
   ,sd.datsample

union all

select
    'last'             as position
   ,sd_.id             as id
   ,max(sd_.datsample) as datsample
   ,sd_.fltsample      as fltsample
from
    sampledata sd_
where
    sd_.fltsample between (select datRptStart from tab) and (select datRptEnd from tab)
group by
    sd_.id
   ,sd_.fltsample