我有桌子,你可以在下面看到。我在sqlfiddle table with all days上的此链接上创建的完整查询。在查询中,我使用concat函数来准备PIVOT表的查询,其中包含列名和日期变量@sql等日期。你可以在 result1 中看到的结果,这个表将是另一个查询的子表,在下一个concat函数中我准备语句,它将比较它们之间的日期"如果价格相同那么值将以其他方式为0,它将是1"并且要求变量@sql2( result2 )。通过table with all days上的此查询,一切正常,但是当我删除例如日期' 2014-02-05'从该表中可以看到它在另一个链接table with deleted date中无法正常工作。我知道我可以写WHERE声明,但我需要动态(因为我不知道会错过哪个日期。也许如果你知道更好的解决方案,你也可以写我。感谢你的帮助
id name date price
------------------------------------
|1 | 'produkt1'| '2014-02-01'| 1250|
|2 | 'produkt1'| '2014-02-02'| 1250|
|3 | 'produkt1'| '2014-02-03'| 1210|
|4 | 'produkt1'| '2014-02-04'| 1230|
|5 | 'produkt1'| '2014-02-05'| 1230|
|6 | 'produkt1'| '2014-02-06'| null|
|7 | 'produkt1'| '2014-02-07'| 1230|
|8 | 'produkt1'| '2014-02-08'| 1230|
|9 | 'produkt2'| '2014-02-01'| 1350|
|10| 'produkt2'| '2014-02-02'| 1220|
|11| 'produkt2'| '2014-02-03'| 1240|
|12| 'produkt2'| '2014-02-04'| 1240|
|13| 'produkt2'| '2014-02-05'| 1240|
|14| 'produkt2'| '2014-02-06'| null|
|15| 'produkt2'| '2014-02-07'| null|
|16| 'produkt2'| '2014-02-08'| 1240|
result1 - PIVOT TABLE
name | 2014-02-01 | 2014-02-02 | 2014-02-03 | 2014-02-04 | 2014-02-05 | 2014-02-06 |
-----------------------------------------------------------------------------------------
produkt1 | 1250 | 1250 | 1210 | 1230 | 1230 | null
-----------------------------------------------------------------------------------------
produkt2 | 1350 | 1220 | 1240 | 1240 | 1240 | null
result2 - 比较价格
name | 2014-02-01 <> 2014-02-02 | 2014-02-02 <>2014-02-03 | 2014-02-03 <> 2014-02-04| ..
-----------------------------------------------------------------------------------------
produkt1 | 1 | 0 | 0
-----------------------------------------------------------------------------------------
produkt2 | 0 | 0 | 1