如何使用 table 中的值输出 table,以及引用 table 的重复查找 ID(在 Pentaho PDI 和 SQL 中)
How to output a table with values from a table, alongside repeated lookup id's of a reference table (in Pentaho PDI and SQL)
考虑一下,我有 table_A,比如:
table_A
+--------+--------+--------+-----+
| code_1 | code_2 | code_3 | qty |
+--------+--------+--------+-----+
| 0.5 | 0.6 | 0.2 | 3 |
+--------+--------+--------+-----+
| 0.8 | 1.2 | 3.2 | 4 |
+--------+--------+--------+-----+
| 3.0 | 2.2 | 0.4 | 7 |
+--------+--------+--------+-----+
和一个reference_table,比如:
reference_table
+--------+--------+
| id | code |
+--------+--------+
| 1 | code_1 |
+--------+--------+
| 2 | code_2 |
+--------+--------+
| 3 | code_3 |
+--------+--------+
现在,我想获得如下输出:
output_table
+--------+--------+--------+
| id | value | qty |
+--------+--------+--------+
| 1 | 0.5 | 3 |
+--------+--------+--------+
| 2 | 0.6 | 3 |
+--------+--------+--------+
| 3 | 0.2 | 3 |
+--------+--------+--------+
| 1 | 0.8 | 4 |
+--------+--------+--------+
| 2 | 1.2 | 4 |
+--------+--------+--------+
| 3 | 3.2 | 4 |
+--------+--------+--------+
| 1 | 3.0 | 7 |
+--------+--------+--------+
| 2 | 2.2 | 7 |
+--------+--------+--------+
| 3 | 0.4 | 7 |
+--------+--------+--------+
注意:- 参考文献 table 在 MySQL 数据库中,table_A 在 MSSQL 数据库。我使用 Pentaho PDI 从 table 获取数据(在不同的数据库中,通过“Table 输入”步骤)。
如何在Pentaho PDI - Spoon (ETL)中获得output_table?
此外,在 SQL 中是如何完成的(如果两个 table 都在同一个 MSSQL 数据库)?
提前致谢:)
在 SQL 服务器中,您可以使用横向连接——即关键字 apply
:
select r.id, v.value, a.qty
from table_A a cross apply
(values ('code_1', a.code_1), ('code_2', a.code_2), ('code_3', a.code_3)
) v(code, value) join
reference r
on r.code = v.code;
考虑一下,我有 table_A,比如:
table_A
+--------+--------+--------+-----+
| code_1 | code_2 | code_3 | qty |
+--------+--------+--------+-----+
| 0.5 | 0.6 | 0.2 | 3 |
+--------+--------+--------+-----+
| 0.8 | 1.2 | 3.2 | 4 |
+--------+--------+--------+-----+
| 3.0 | 2.2 | 0.4 | 7 |
+--------+--------+--------+-----+
和一个reference_table,比如:
reference_table
+--------+--------+
| id | code |
+--------+--------+
| 1 | code_1 |
+--------+--------+
| 2 | code_2 |
+--------+--------+
| 3 | code_3 |
+--------+--------+
现在,我想获得如下输出:
output_table
+--------+--------+--------+
| id | value | qty |
+--------+--------+--------+
| 1 | 0.5 | 3 |
+--------+--------+--------+
| 2 | 0.6 | 3 |
+--------+--------+--------+
| 3 | 0.2 | 3 |
+--------+--------+--------+
| 1 | 0.8 | 4 |
+--------+--------+--------+
| 2 | 1.2 | 4 |
+--------+--------+--------+
| 3 | 3.2 | 4 |
+--------+--------+--------+
| 1 | 3.0 | 7 |
+--------+--------+--------+
| 2 | 2.2 | 7 |
+--------+--------+--------+
| 3 | 0.4 | 7 |
+--------+--------+--------+
注意:- 参考文献 table 在 MySQL 数据库中,table_A 在 MSSQL 数据库。我使用 Pentaho PDI 从 table 获取数据(在不同的数据库中,通过“Table 输入”步骤)。
如何在Pentaho PDI - Spoon (ETL)中获得output_table?
此外,在 SQL 中是如何完成的(如果两个 table 都在同一个 MSSQL 数据库)?
提前致谢:)
在 SQL 服务器中,您可以使用横向连接——即关键字 apply
:
select r.id, v.value, a.qty
from table_A a cross apply
(values ('code_1', a.code_1), ('code_2', a.code_2), ('code_3', a.code_3)
) v(code, value) join
reference r
on r.code = v.code;