【发布时间】:2018-04-30 09:17:51
【问题描述】:
我在 SQL 中有一个如下所示的表:
Customer Product 1999 2000 2001 2002 2003
Smith 51 NULL NULL 15 14 NULL
Jones 14 11 7 NULL NULL NULL
Jackson 13 NULL NULL NULL 3 9
每年一栏下的数字是金额,以美元为单位。每个客户有连续两年的金额,其余年份为零。我想重新构建此表,以便它只有两列 Amount-Year1 和 Amount-Year2,而不是年份列表。因此,它选择两个非零年份并将它们以正确的顺序放在这些列中。这将大大减小我的表的大小。
到目前为止,我已经能够对其进行重组,以便有一个金额列和一年列,但我随后会为每个客户获得多行,不幸的是我不能拥有(由于下游分析)。谁能想到获得两个 Amount-Year 列的方法?
我希望决赛桌看起来像这样:
Customer Product Amount_Y1 Amount_Y2
Smith 51 15 14
Jones 14 11 7
Jackson 13 3 9
我不介意丢失有关特定年份的信息,因为我可以从其他来源获得。实际表中有 1999 年至 2018 年间所有年份的数据,未来还会有更多年份。
谢谢
【问题讨论】:
-
您使用的是哪个 RDBMS?
-
对不起,应该说 - 我正在使用 SQL Server Management Studio
-
如果我需要重新构建这个表,我会分成 2 个表 - tblCust (CustID, CustName) 和 tblCustAmount (RowID, FK_CustID, Amount)。这将有助于未来的数据参考和报告。
标签: sql sql-server database data-structures