我的数据库中有一个表,就像下面的示例一样,我想查询相同的数据,但是在第2列中,数据的位置将比以前的数据大1行。
我实际上制作了一个电表读数系统,我需要电流(第1栏)和先前(第2栏)的数据读取,这样我就可以计算电表的总消耗量。但我很难做到这一点。如有任何建议,将不胜感激。谢谢。:)
示例数据:

所需的查询输出:

发布于 2019-04-13 14:12:58
请记住,SQL表行没有固有的顺序。只是一袋袋的记录。
您必须根据某些列值或其他条件对它们进行排序。在你的情况下,我想你想要的是每个帐户的最新和第二次最新的表读数。想必您的阅读表有如下所示的列:
reading_id customer_id datestamp value
1 1122 2009-02-11 112
2 1234 2009-02-13 18
3 1122 2009-03-08 125
4 1234 2009-03-10 40
5 1122 2009-04-12 160
6 1234 2009-04-11 62我想你需要这样的结果集
customer_id datestamp value previous
1122 2009-03-08 125 112
1122 2009-04-12 160 125
1234 ...etcetera.你怎么能拿到这个?对于表中的每一行,您需要一种方法来查找相同客户的前一次读取:即
这是一个所谓关联子查询的作业.下面是这个查询,以及它的子查询。(https://www.db-fiddle.com/f/hWGAbq4uAbA5f15j7oZY9o/0)
SELECT aft.customer_id,
aft.datestamp,
( SELECT bef.value
FROM r bef /* row from table.... */
WHERE bef.datestamp < aft.datestamp /* with datestamp < present datestamp */
AND bef.customer_id = aft.customer_id /* and same customer id */
ORDER BY bef.datestamp DESC /* most recent first */
LIMIT 1 /* only most recent */
) prev,
aft.value
FROM r aft
ORDER BY aft.customer_id, aft.datestamp注意,在您的业务流程中,处理每个客户的第一次阅读都需要考虑一些问题。
https://stackoverflow.com/questions/55665844
复制相似问题