SQL: 如何将每列的周期转换为每行的周期

SQL: How do i convert period per column to period per row

我正在使用 Microsoft ODBC 数据源从 excel 电子表格中提取数据,因此我无法使用 pivot / unpivot 函数来帮助转置数据。此外,电子表格的格式是固定的,因此无法在 excel 内更改:(

我需要更改以下示例的格式table:

为此格式:

可以有N个项目和N个组件。 一般来说,周期数总是相同的,但最多可以有 40 个。但如果可能的话,我希望看到 N 个周期的动态解决方案。

另一种格式是每个组件有一列:

提前致谢。

我会创建一个与您的输入文件格式匹配的分段 table。只需截断它,然后将您的 excel 电子表格导入其中。数据存在后,您可以根据需要使用 pivot tables。顺便说一句,尽可能避免使用动态 SQL。

如果您不想走那条路,则必须针对这种情况编写特定的 SQL。

示例:

SELECT [Project Name], '2015' AS [Period], [2015] AS [Value]
FROM your spreadsheet

UNION ALL

SELECT [Project Name], '2016' AS [Period], [2016] AS [Value]
From your spreadsheet

Order By Project Name, Period