获取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