我正在尝试执行查询,该查询查询标记的值并在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
非常感谢任何帮助。
谢谢
答案 0 :(得分:1)
json2sstable
答案 1 :(得分:0)
在你的查询中,你正在寻找ah2中的一行,即行后7-31小时啊。上一个查询的输出显示啊,日期分别为11 / 01,11 / 02和11/03,但不是12/01。第二个查询显示ah2中的行存在于12/01之后的7-31小时。除非您截断上一个查询的结果,否则我不一定会期望第一个查询返回任何数据。