SQL-同一表中的多个值(多对一)

SQL-同一表中的多个值(多对一),sql,Sql,我正在尝试编写一个查询,该查询将返回一个表中的值,该表的行为列(多对一)。我正在使用Oracle SQL Developer。例如: Table1 = WI Table2 = VAL Key = File WI表具有主记录。VAL表对主记录中的每个字段都有单独的行 WI File1 | Type | Date File2 | Type | Date VAL File1 | Field1 | Value File1 | Field2 | Value File1 | Fi

我正在尝试编写一个查询,该查询将返回一个表中的值,该表的行为列(多对一)。我正在使用Oracle SQL Developer。例如:

    Table1 = WI
    Table2 = VAL
    Key = File
WI表具有主记录。VAL表对主记录中的每个字段都有单独的行

WI
File1 | Type | Date
File2 | Type | Date

VAL
File1 | Field1 | Value
File1 | Field2 | Value
File1 | Field3 | Value
File2 | Field1 | Value
File2 | Field3 | Value
我期待着返回:

WI.File1 | WI.Type | VAL.Value (Field1) | VAL.Value (Field2) | VAL.Value (Field3)
我不想排除VAL中为空的记录。表之间始终存在文件到文件的关系。如果记录中未使用该值,则该字段将不在VAL中

因此,使用以下值重新访问上面的布局:

WI
File1 | New | 09/12/2019
File2 | Old | 09/10/2019

VAL
File1 | Amount | 10
File1 | Process| Yes
File1 | Name | Matt
File2 | Amount | 15
File2 | Name | Tom
预期结果:

File  | Type | Amount | Process | Name
-----------------------------------------
File1 | New  |10      | Yes     | Matt
File2 | Old  |15      |         | Tom

我怎样才能得到我想要的结果?

您的关系数据库是什么?Sql Server、postgres、oracle?什么版本?Google for
PIVOT
获取SQL标记指南中的RDBMS:问题应该包括代码示例、表结构、示例数据和正在使用的DBMS实现(例如MySQL、PostgreSQL、Oracle、MS SQL Server、IBM DB2等)的标记。这看起来是一个基本的PIVOT查询(这里有很多)。表2中可能的字段名数量是否已知/不太可能更改?如果是这样,您可以硬编码这些值;否则,您可能会研究动态SQL。我将硬编码表2中的值。实际上,每个文件可能有50-100个值。我通常想要返回一组特定的3个左右。我使用的是Oracle SQL Developer。“字段”列的可能值仅为“金额”、“进程”和“名称”,或者其中有很多?在第一种情况下,您可以简单地使用左外连接(3次)。否则,我建议采用支点。