如何在 SQL 中反转? (SAP HANA)(列到行)
How to Unpivot in SQL? (SAP HANA) (Columns to rows)
我需要在 SAP HANA 中逆透视一些数据。我设置了一个示例 table 来试用它,但我仍然无法获得任何结果。
实际的 table 包含 1000 个 ID 和约 50 个列,但我想为许多 table 执行此操作,因此虽然我可以指定 FieldNames(原始列),但它会很高兴有一个自动化的解决方案。
这里是例子table我设置:
我想将结果转化为这种形式:
注意:'?'代表 NULL.
创建示例table:
create local temporary table #example
(
ID NVARCHAR(255),
Name NVARCHAR(255),
Country NVARCHAR(255),
Balance Decimal(18,2)
);
insert into #example values('ID1','Bill','USA', 100);
insert into #example values('ID2','','', 45);
insert into #example values('ID3', NULL,NULL, 768);
insert into #example values('ID4',NULL,'France', 42);
这是一个需要我指定列名和类型转换的解决方案:
(联合建议归功于 jarlh)
select
"ID",
'Country' as "FieldName",
"COUNTRY" as "FieldValue"
from #example
union all
select
"ID",
'Name' as "FieldName",
"NAME" as "FieldValue"
from #example
union all
select
"ID",
'Balance' as "FieldName",
CAST("BALANCE" as NVARCHAR) as "FieldValue"
from #example
在涉及 SQL 数据库的大多数情况下,创建像 table 这样的键值存储是错误的做法。
也就是说,借助 HANA SDI/SDQ(智能数据 Integration/smart 数据质量),您可以创建一个“流程图”(基本上是一个数据转换过程)来执行 pivot/unpivot 操作,而无需编写太多代码.
我需要在 SAP HANA 中逆透视一些数据。我设置了一个示例 table 来试用它,但我仍然无法获得任何结果。
实际的 table 包含 1000 个 ID 和约 50 个列,但我想为许多 table 执行此操作,因此虽然我可以指定 FieldNames(原始列),但它会很高兴有一个自动化的解决方案。
这里是例子table我设置:
我想将结果转化为这种形式:
注意:'?'代表 NULL.
创建示例table:
create local temporary table #example
(
ID NVARCHAR(255),
Name NVARCHAR(255),
Country NVARCHAR(255),
Balance Decimal(18,2)
);
insert into #example values('ID1','Bill','USA', 100);
insert into #example values('ID2','','', 45);
insert into #example values('ID3', NULL,NULL, 768);
insert into #example values('ID4',NULL,'France', 42);
这是一个需要我指定列名和类型转换的解决方案:
(联合建议归功于 jarlh)
select
"ID",
'Country' as "FieldName",
"COUNTRY" as "FieldValue"
from #example
union all
select
"ID",
'Name' as "FieldName",
"NAME" as "FieldValue"
from #example
union all
select
"ID",
'Balance' as "FieldName",
CAST("BALANCE" as NVARCHAR) as "FieldValue"
from #example
在涉及 SQL 数据库的大多数情况下,创建像 table 这样的键值存储是错误的做法。 也就是说,借助 HANA SDI/SDQ(智能数据 Integration/smart 数据质量),您可以创建一个“流程图”(基本上是一个数据转换过程)来执行 pivot/unpivot 操作,而无需编写太多代码.