使用PIVOT准备语句,如MySQL中的子查询表

时间:2014-02-14 02:55:23

标签: mysql prepared-statement pivot-table

我有桌子,你可以在下面看到。我在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

0 个答案:

没有答案