Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Sql server中两个日期之间的值偏差_Sql_Sql Server 2008 - Fatal编程技术网

获取Sql server中两个日期之间的值偏差

获取Sql server中两个日期之间的值偏差,sql,sql-server-2008,Sql,Sql Server 2008,我有以下格式的数据: run_date test_alias test_value 12/23/2014 1 12 11/22/2014 1 5 1/20/2015 1 7 2/20/2015 1 9 12/19/2014 2 12 2/19/2015 2 12.5 1/18/2015 2 13 1

我有以下格式的数据:

run_date    test_alias  test_value
12/23/2014    1           12
11/22/2014    1           5
1/20/2015     1           7
2/20/2015     1           9

12/19/2014    2           12
2/19/2015     2           12.5
1/18/2015     2           13
11/17/2014    2           12.7

2/13/2015     3           4
1/13/2015     3           5
12/13/2014    3           7
11/13/2014    3           8
从今天起的最后3个月内,如果偏差在2到4之间,我如何获取记录的id。在这种情况下,id 3和1应该从 对于id 3,最后3个月的值为4、5和7。因此,在本例中,偏差为7-4=3,介于2和4之间 对于id 1,过去三个月的值为9,7和12,即12-9=3


任何帮助都会非常好

有没有一种不用聚合函数就可以做到这一点的方法这会变得更复杂,但您可以尝试从my_表中选择不同的test_别名,其中test_别名位于从my_表中选择test_别名的mt1中,其中mt1.run_date>Dateaddmonth,-3,Getdate和mt1.test\u value>=my\u table.test\u value+2和test\u alias不在my\u table mt1中选择test\u alias,其中mt1.run\u date>Dateaddmonth,-3,Getdate和mt1.test\u value>=my\u table.test\u value+5和run\u date>=Dateaddmonth,-3,Getdate my\u table ORDER BY test\u alias,测试值如何使用第一次查询在同一查询中查找最大值和最小值之间的变化百分比您只需添加一列maxtest值-mintest值/maxtest值*100即可。
SELECT test_alias, max(test_value) - min(test_value) AS deviation
  FROM my_table
  WHERE run_date >= Dateadd(month, -3, Getdate())
  GROUP BY test_alias
  HAVING (max(test_value) - min(test_value)) BETWEEN 2 AND 4