【发布时间】:2015-11-12 18:19:51
【问题描述】:
我有 2 张桌子。第一个每天刷新。(该表有超过 10 列,但其中 2 列是相关的)我想从 vid (这是一个唯一的 id )和人口中进行每日统计。新的 vid ID-s 每天都会出现和消失。例如:
第一天:
vid population
123 456
124 567
345 1024
第二天:
vid population
123 470
124 520
344 100
第二张表是统计数据,我想要以下结果:
|--------------------1st day data
| |----------- 2nd day data
vid stat0819 stat0820
123 456 470
124 567 520
344 0 100
345 1024 0
是否可以使用一个 SQL 查询?我认为,UNION 是关键,但我无法弄清楚如何。
【问题讨论】:
-
第2天第1天的数据是什么表?如果不将第一天的数据存储在某处,我看不到联合或任何查询将如何工作。您需要以某种方式存档历史记录(例如添加一个触发器和另一个包含独立于日期的所有数据的表,然后查询它)
-
刷新第一个表后,第二个表存储它。简而言之,我想将每日值存储在第二张表中。
-
要实现这一点,您必须动态地将列添加到第二个表中。在某些时候,您会达到数据库允许的最大列数。我相信它是4096 然后呢?您最好使用触发器并在第二个表中有 3 列... VID、人口和“日期”,然后您可以使用视图等旋转数据或聚合结果。请记住,您仍然不能超过视图中允许的最大列数。
-
我在刷新表格之前动态添加新列,我将删除第一列(1 或 4 周后,我还不知道)。但是每天1栏,4096栏就够11年了:)