我在MySQL中有以下表格:
Date | Item A | Item B | Item C | Item D
------------------------------------------------
1/1/16 | 1 | 0 | 3 | 1
1/2/16 | 3 | 3 | 4 | 0
1/3/16 | 10 | 4 | 8 | 1
1/4/16 | 5 | 3 | 8 | 3
输出应该是一个新表,其中包含每个项目与前一天相比的价值差异。样本表的输出将是一个包含以下内容的新表:
Date | Item A | Item B | Item C | Item D
------------------------------------------------
1/2/16 | 2 | 3 | 1 | -1
1/3/16 | 7 | 1 | 4 | 1
1/4/16 | -5 | -1 | 0 | 2
我想用一个MySQL命令来实现这一点。我目前有类似的东西:
SELECT SUM(Item A) AS DIFF
FROM my_table
WHERE date = '1/1/16'
输出“1”。但这并不接近我所期待的......
感谢您的帮助和输入。
答案 0 :(得分:0)
要计算同一个表的两行之间的差异,您需要自己加入表,这样您就可以在查询内的同一行中拥有2行的值。
测试它:
SELECT t1.ItemA, t2.ItemA, t1.ItemA-t2.ItemA AS DiffA,
t1.ItemB, t2.ItemB, t1.ItemB-t2.ItemB AS DiffB
FROM my_table t1, my_table t2
WHERE t1.date = '1/2/16' AND
t2.date = '1/1/16'
注意:根据ItemA
的确切字段类型,您可能需要执行此操作(在我的情况下需要这样做):CAST(t1.ItemA AS signed) - CAST(t2.ItemA AS signed) AS DiffA