首页 > 解决方案 > SQL将日期传递到另一个表

问题描述

我有这种只有 varchar 和 int 类型的表。我需要将其他表中的日期(参数)传递到此表中。例如:当我通过“2018-01-30”时,它将从 Jan 列显示。有没有办法归档这个?

数据 数据类型

标签: mysqlsql

解决方案


如果要根据日期的月份显示不同的列,则可以通过组合elt()和 month() 函数来实现此目的,只需一个查询即可:

select elt(month('2018-01-30'),jan, feb, mar, ..., dec) as mon from yourtable

elt()根据第一个参数中提供的索引返回第 N 个参数。该month()函数返回日期中的月份数(例如一月=> 1)。

如果您想根据日期显示不同数量的列,那么使用单个查询是不可能的,因为列数必须在查询中固定。在这种情况下,您需要编写一个使用动态 sql 生成查询的存储过程,或者使用外部编程语言编写一段代码来动态组装和执行这样的查询。

进一步说明:

  1. 存储在您的列中的数据似乎是数字,但您将它们存储为字符串。decimal数据类型似乎更合适。

  2. 考虑更改您的数据结构并使用单个月份或 year_month 列加上一个价格列,而不是几个月的列。可以即时计算总数和平均值。


推荐阅读