我有一个像这样的问题
SQL: selecting rows where column value changed from previous row
虽然不在SQL Server的mysql中。我尝试了ypercube的第一个回答jiri的答案和egor's。所有这些都只运行超过5分钟而没有结果(一个让我跑超过10分钟)。该表包含超过一百万条记录,所以我知道这是问题的一个重要部分。我有一种感觉ypercube的第二个答案可能会运作良好,但不知道如何将这个变量驱动的mysql查询更改为SQL。
任何帮助将不胜感激。
SQL版本2008 r2
基本上我需要确定价格在包含价格,productID,序列号和日期戳的表格上的变化。
我可以快速列出需要检查哪些产品/序列号以进行比较。对不起,我之前没有提到这个,我以为我可以调整一个解决方案来适应它。
答案 0 :(得分:0)
公用表表达式应该相当有效;
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY system ORDER BY timestamp) rn
FROM TableX
)
SELECT a.timestamp, a.system, a.statusa, a.statusb
FROM cte a JOIN cte b ON a.system = b.system AND a.rn = b.rn+1
WHERE a.statusa <> b.statusa