【发布时间】:2013-04-21 11:10:28
【问题描述】:
我有一个 tableB,它有 35 列和数十万行(每行也是唯一的)。
+------------------------------------------------------------------------------+
|Date | ID | Name | Blah1 | Blah2 | ... | Hour1 | Hour2 | Hour3 | ... | Hour24 |
+------------------------------------------------------------------------------+
TableB 中的每一行都有每小时的观察和其他一些内务信息。
我想根据查询 TableB 插入另一个表 (TableA),以便为 TableA (Hour) 中的一列分配值 1 用于 Hour1 列,2 用于 Hour2 列,3 用于 Hour3 列等等列 ObservationValue 将 Hour1、Hour2、Hour3... 中的值分配给 Hour24。所以 TableA 是时间序列表示的。
TableA 如下所示:
+------------------------------------------------+
|Date| ID| Name | Zone | Hour | ObservationValue |
+------------------------------------------------+
我完全不确定我该怎么做。我知道如何根据查询插入表,但不知道如何执行我想做的操作。
感谢您的帮助。
编辑
示例数据(我不确定 TableB 的设计是否是最好的,但这是在我继承系统多年前完成的)。
表B:
8/1/2006 12:00:00 AM 48590 Miami Florida Blah Blah Blah Blah 69.89 63.55 50.73 45.05 44.17 50.39 63.93 84.73 87.61 102.43 123.39 154.33 181.1 232.71 262.11 290.64 299.44 262.67 214.22 191.15 172.49 132.62 105.83 98.25
以上是一条记录的示例。在这种情况下,ID=48590,Name=Miami,Zone=Florida。一年中的每一天都有一个条目,为期 10 年。此表中大约有 10,000 个 ID。
表A:
8/1/2006 12:00:00 AM 48590 Miami Florida 1 69.89
8/1/2006 12:00:00 AM 48590 Miami Florida 2 63.55
8/1/2006 12:00:00 AM 48590 Miami Florida 3 50.73
8/1/2006 12:00:00 AM 48590 Miami Florida 4 45.05
8/1/2006 12:00:00 AM 48590 Miami Florida 5 44.17
8/1/2006 12:00:00 AM 48590 Miami Florida 6 50.39
8/1/2006 12:00:00 AM 48590 Miami Florida 7 63.93
8/1/2006 12:00:00 AM 48590 Miami Florida 8 84.73
8/1/2006 12:00:00 AM 48590 Miami Florida 9 87.61
8/1/2006 12:00:00 AM 48590 Miami Florida 10 102.43
8/1/2006 12:00:00 AM 48590 Miami Florida 11 123.39
8/1/2006 12:00:00 AM 48590 Miami Florida 12 154.33
8/1/2006 12:00:00 AM 48590 Miami Florida 13 181.1
8/1/2006 12:00:00 AM 48590 Miami Florida 14 232.71
8/1/2006 12:00:00 AM 48590 Miami Florida 15 262.11
8/1/2006 12:00:00 AM 48590 Miami Florida 16 290.64
8/1/2006 12:00:00 AM 48590 Miami Florida 17 299.44
8/1/2006 12:00:00 AM 48590 Miami Florida 18 262.67
8/1/2006 12:00:00 AM 48590 Miami Florida 19 214.22
8/1/2006 12:00:00 AM 48590 Miami Florida 20 191.15
8/1/2006 12:00:00 AM 48590 Miami Florida 21 172.49
8/1/2006 12:00:00 AM 48590 Miami Florida 22 132.62
8/1/2006 12:00:00 AM 48590 Miami Florida 23 105.83
8/1/2006 12:00:00 AM 48590 Miami Florida 24 98.25
我的另一个问题是,如果我打算进行算术运算,例如从同一 ID 但在另一个表中的 ObservationValue 中减去给定 ID 的 ObservationValue,哪种结构更好? TableA 是那种类型的操作的最佳选择,还是拥有 TableB 结构更好?
【问题讨论】:
-
请提供
TableB的示例数据以及TableA在insert之后的外观。 -
请通过添加适当的标签(Oracle、SQL Server、MySQL 等)指定您的目标关系数据库管理系统。可能有一些答案利用了不受普遍支持的语言或产品功能。此外,通过使用特定的 RDBMS 对其进行标记,您的问题可能会受到更适合回答的人的关注。
-
这是 SQL Sever(我认为是 2005 年)。我会把它添加到标签中。
标签: sql sql-server sql-insert