【发布时间】:2017-11-24 13:23:41
【问题描述】:
请注意,我之前问过这个问题,但意识到我遗漏了一些非常重要的信息,并且觉得最好删除原来的问题并发布一个新问题。我向大家道歉............
我有一个包含以下列的表格:
ID
Name
2010/Jan
2010/Jan_pct
2010/Feb
2010/Feb_pct
.....
.....
2017/Nov
2017/Nov_pct
然后是这样的列,用于迄今为止的每个月/年组合(希望这是有道理的)。但请注意:并不是每个月/年的组合都存在。可能存在差距或缺少月份/年份。例如,我知道 2017/Jan、2017/Feb 丢失了,并且可能缺少任何数字。我只是不想列出每一列,而是大致了解布局。
此外,数据库中没有一行,但一个名称/ID 可以有多行,并且 ID 不是身份,但可以是任意数字。
为了了解表格的外观,这里有一些示例数据(请注意,我只添加了两个年/月组合,但有几十个不一定每个月/年都有一个)
ID Name 2010/Jan 2010/Jan_Pct 2010/Feb 2010/Feb_Pct
10 Gold 81 0.00123 79 0.01242
134 Silver 82 0 75 0.21291
678 Iron 987 1.53252 1056 2.9897
您可以想象,这不是最好的设计,因为您需要每个月添加两个新列。所以我创建了一个具有以下定义的新表
ID - float,
Name - varchar(255),
Month - varchar(3),
Year - int,
Value - int,
Value_Pct - float
我正在试图弄清楚如何将现有数据从旧表移动到新表设计中。
任何帮助将不胜感激.....
【问题讨论】:
-
如果将月份和年份合并到一个日期列中可能会更好。除此之外,之前的 unpivot 是您所需要的。不知道为什么你删除了那个,因为 99.999% 的工作已经在那个中完成了。
-
诚实的回答是因为我以为我打错了要求,但我保存了信息。是我自己的愚蠢,没有完全理解并因此而感到困惑,但我明白你现在在说什么。我为这个错误道歉......
标签: sql-server tsql