-1
比方说,我使用的是被称为TestTable的下面的SQL表:如何在SQL中的不同日期之间减去值?
Date Value1 Value2 Value3 ... Name
2013/01/01 1 4 7 Name1
2013/01/14 6 10 8 Name1
2013/02/23 10 32 9 Name1
而且我想获得的值的增量之间的日期,如:
Value1Inc Value2Inc Value3Inc Name
4 22 1 Name1
2013/02/23
之间和2013/01/14
。
请注意,这些值始终增加。我想在StackOverflow上发现了以下方法:
select (
(select value1 from TestTable where date < '2013/01/14') -
(select value1 from TestTable where date < '2013/02/23')
) as Value1Inc,
(select value2 from TestTable where date < '2013/01/14') -
(select value2 from TestTable where date < '2013/02/23')
as Value2Inc
...
等,但这种做法给了我一个巨大的查询。我想使用MAX SQL函数为了简化查询,但我不知道如何做,因为我不是一个SQL maste(至少:-),但我不知道如何做。
请问你能帮我一把吗?
编辑:UPS,我认为我已经发现myselft解决方案加入了“GROUP BY名”在查询像这样的结尾:
选择名称,最大(值) - 分(值)from TestTable where date <'2013-02-23'and date>'2013-01-01'GROUP BY名称
就是这样!
向我们展示您的尝试,以便我们能够告诉您您的错误在哪里。 – MarcinJuraszek
我已经尝试到目前为止,以下SQL查询:从TestTable哪里日期<'2013-02-23'和日期>'2013-01-01'选择名称,最大值(value1) - min(value1),我得到“ Column TestTable.name在选择列表中是无效的,因为它不包含在聚合函数或GROUP BY子句中。 – user1108105
@ user1108105:据我所知,你的问题是检索一行,比如说两个日期之间的差值。因此,你使用退休多重行动作为结果 你想要什么以及你是如何做到的(所以我们可以帮你) –