内部SQL查询

时间:2016-02-02 07:51:38

标签: sql sql-server tsql

我正在尝试执行查询,该查询查询标记的值并在24小时内(早上7点到早上7点)获取值的范围,并获取预定义时间段内的数据。我已经尝试了以下查询,并且由于某种原因我获得了 null结果。我知道该领域有数据,因为我可以单独运行查询,它工作正常。

有人可以提出建议吗?

select tagname, convert(date, datetime),
   (select (max(ah2.Value) - min(ah2.Value))
    from Runtime.dbo.AnalogHistory ah2
    where ah2.TagName = 'LS_CV004_WX1_PROD_DATA.Actual_Input' and
          ah2.DateTime BETWEEN dateadd(hour, 7, convert(datetime, convert(date, ah.datetime))) AND 
                         dateadd(hour, 31, convert(datetime, convert(date, ah.datetime)))

   ) as Production
from runtime.dbo.analoghistory ah
where ah.TagName = 'LS_CV004_WX1_PROD_DATA.Actual_Input' or
  ah.datetime between '20151101' and '20151201'
group by ah.tagname, convert(date, ah.DateTime),ah.value;

单日查询。这将返回单个结果

 select (max(ah2.Value) - min(ah2.Value))
    from Runtime.dbo.AnalogHistory ah2
    where ah2.TagName = 'LS_CV004_WX1_PROD_DATA.Actual_Input' and
          ah2.DateTime BETWEEN dateadd(hour, 7, convert(datetime, convert(date, '20151201'))) AND 
                         dateadd(hour, 31, convert(datetime, convert(date, '20151201')))

84899

预定义日期字段

select tagname, convert(date, datetime),value
from runtime.dbo.analoghistory ah
where ah.TagName = 'LS_CV004_WX1_PROD_DATA.Actual_Input' or
  ah.datetime between '20151101' and '20151201'
group by tagname, convert(date, ah.DateTime),Value;



LS_CV004_WX1_PROD_DATA.Actual_Input 2015-11-01  7219619.5
LS_CV004_WX1_PROD_DATA.Actual_Input 2015-11-01  7227095
LS_CV004_WX1_PROD_DATA.Actual_Input 2015-11-01  7231152
LS_CV004_WX1_PROD_DATA.Actual_Input 2015-11-01  7238661
LS_CV004_WX1_PROD_DATA.Actual_Input 2015-11-02  7245601.5
LS_CV004_WX1_PROD_DATA.Actual_Input 2015-11-02  7249393.5
LS_CV004_WX1_PROD_DATA.Actual_Input 2015-11-02  7256899
LS_CV004_WX1_PROD_DATA.Actual_Input 2015-11-03  7264266.5
LS_CV004_WX1_PROD_DATA.Actual_Input 2015-11-03  7268411.5

非常感谢任何帮助。

谢谢

2 个答案:

答案 0 :(得分:1)

json2sstable

答案 1 :(得分:0)

在你的查询中,你正在寻找ah2中的一行,即行后7-31小时啊。上一个查询的输出显示啊,日期分别为11 / 01,11 / 02和11/03,但不是12/01。第二个查询显示ah2中的行存在于12/01之后的7-31小时。除非您截断上一个查询的结果,否则我不一定会期望第一个查询返回任何数据。