mysql - SQL将日期传递到另一个表
解决方案
如果要根据日期的月份显示不同的列,则可以通过组合elt()和 month() 函数来实现此目的,只需一个查询即可:
select elt(month('2018-01-30'),jan, feb, mar, ..., dec) as mon from yourtable
elt()
根据第一个参数中提供的索引返回第 N 个参数。该month()
函数返回日期中的月份数(例如一月=> 1)。
如果您想根据日期显示不同数量的列,那么使用单个查询是不可能的,因为列数必须在查询中固定。在这种情况下,您需要编写一个使用动态 sql 生成查询的存储过程,或者使用外部编程语言编写一段代码来动态组装和执行这样的查询。
进一步说明:
存储在您的列中的数据似乎是数字,但您将它们存储为字符串。
decimal
数据类型似乎更合适。考虑更改您的数据结构并使用单个月份或 year_month 列加上一个价格列,而不是几个月的列。可以即时计算总数和平均值。
推荐阅读
- java - doNothing() 和 times() 在 Mockito 中同时使用
- docker - Docker / TeamCity / xUnit - 测试选项卡缺失和失败的测试不会停止构建
- java - JavaFX 画布返回 Null
- rules - 如何确定对象是否是 IBM Rules Designer/ODM 中某个类的实例?
- php - 获取新闻提要(社交媒体)
- python - 如何在守护进程模式下使用 docker 运行 Python?
- python - keras TypeError:'int'对象不可迭代
- java-8 - 从 Java 6 升级到 Java 8 后应用程序的虚拟内存使用率很高
- shiny - R Shiny DT - 将 pageLength 更改为选定的行
- python - Apache Spark:无法在 Jupyter Notebook 上使用 Matplotlib