将1行数据分隔为多行

时间:2018-02-01 15:06:57

标签: sql excel pentaho

我目前有一个包含多个行和列的表,如bellow(行中的数据有些分组)

ID Column1_1 Column1_2 Column1_3 Column1_4 Column2_1 Column2_2 Column2_3 etc.
1     data11    data12    data13   etc.
2     data21    data22    etc. 
3     data31     etc.

我需要将此表导出为ex​​cel,如下所示:

ID  Column       DATA
1   Column1_1     data11
1   Column1_2     data12
1   Column1_3     data13
1   Column1_4     data14
2   Column2_1     data21
2   Column2_2     data22

我想先将它导出到一个大的Excel中,然后创建多个工作表。但我可以在Excel中使用group by吗?

2 个答案:

答案 0 :(得分:1)

您可以使用UNPIVOT

SELECT
  ID, ColumnName, DataValue
FROM
  YourTable
UNPIVOT
(
  DataValue FOR ColumnName IN (Column1_1, Column1_2, Column1_3, Column1_4, Column2_1, Column2_2, Column2_3.........)
)
  AS unpvt;

https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-and-unpivot

答案 1 :(得分:0)

您正在规范化数据,并且您只有一个名为Row Normalizer的字段。 (Official doc is here)。

不可否认,最初几次你用过时的词汇拉你的头发,只是因为微软通过将这个操作称为“枢轴”来重新发明轮子。

在您的情况下,Typefield为“列”,Fieldname为“Column1_1”,或者您的输入中列出的任何列,Type为“Column1_1”或无论你想在输出上的Column列中写什么,New field是“DATA”或者你想要命名输出非规范化列的任何内容。

当然,有一个底部按钮可以帮助你,但是,因为它接缝是你的第一次,我建议你先用两个或树柱手动尝试。