查询以前的行值,并合并到当前行
有没有一种方法,我怎么可以查询以前的行值,并合并到当前行,这里是我的示例表场景:查询以前的行值,并合并到当前行
+-------------------------------------+
| ColA | ColB | ColValue | Date |
|------|------|----------|------------|
| AAA | 111 | 5 | 2017-04-23 |
| AAA | 111 | 4 | 2017-04-22 |
| AAA | 111 | 3 | 2017-04-21 |
| BBB | 222 | 5 | 2017-04-30 |
| BBB | 222 | 4 | 2017-04-29 |
+-------------------------------------+
而我预期的结果应该是这只是想获得以前和当前值,并按选定的列和日期进行分组。
+--------------------------------------------------+
| ColA | ColB | PreValue | CurValue | Date |
|------|------|----------|-------------------------|
| AAA | 111 | 4 | 5 | 2017-04-23 |
| AAA | 111 | 3 | 4 | 2017-04-22 |
| AAA | 111 | N/A | 3 | 2017-04-21 |
| BBB | 222 | 4 | 5 | 2017-04-30 |
| BBB | 222 | N/A | 4 | 2017-04-29 |
+--------------------------------------------------+
任何建议或解决方案,在此先感谢
下面是从我的实际数据作为参考我的实际查询:
SELECT ai.APName, tbap.Value , tbap.DateTime, tbap.Comment, tbap.ModifiedBy, tbap.ToolName, d.Name as Strategy FROM (SELECT dt.*,ins.Value as ToolName FROM (SELECT av.*,ai.DocumentID,ai.IndexID FROM ControlAutomation.appartitionindexes ai
JOIN (SELECT * FROM ControlAutomation.appartitionvalues
where DateTime > '2017-04-22 23:17:13' and DateTime < '2017-04-26 23:18:28') av
ON ai.APPartitionID = av.APPartitionID) dt INNER JOIN factory.indexes ins ON ins.ID = dt.IndexID
where dt.comment like '%updateAdjustableParameter%'
group by dt.ID) tbap
INNER JOIN ControlAutomation.documents d ON d.ID = tbap.DocumentID
INNER JOIN appartitionindexes ai ON ai.APPartitionID = tbap.APPartitionID
GROUP BY tbap.ID
ORDER BY tbap.ToolName DESC, d.Name, tbap.DateTime DESC
LIMIT 100
希望我正确地得到了你的问题:http://sqlfiddle.com/#!9/d815c/6
select
prev_query.cola as ColA,
prev_query.colb as ColB,
rhs.colvalue as PreValue,
prev_query.colvalue as CurValue,
prev_query.coldate as ColDate
from
prev_query left join prev_query as rhs
on prev_query.cola = rhs.cola
and prev_query.colb = rhs.colb
and prev_query.colvalue = rhs.colvalue + 1
order by
prev_query.cola, prev_query.colb, prev_query.coldate desc;
我很欣赏这个解决方案,但在得到我的结果之前它来自不同的表格。我想创建它作为视图,但我没有任何管理权限的数据库,所以我用它作为子查询。当试图做你的左连接给我,该表不存在。 –
我更新了我的问题并发布了我的实际查询,并努力将您的逻辑注入到我的查询中,希望将有助于作为参考,并且它只着重于tbap.Value列。 –
@ Rockn'Roll你可以提供一个工作sqlfiddle与一些数据? –
表中有主键吗?或者换句话说要知道哪个是以前的价值。由于给定的示例表AAA具有全部第23个日期,因此无法知道哪个是第一个 –
为什么需要此输出,这可能需要使用会话变量? –
实际上,在我的真实数据中,日期列是唯一的,我将它用作我的主要数据,所以这就是为什么它需要先按日期进行分组,然后是colA然后colB –