首页 > 解决方案 > 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 | Field3 | Value
File2 | Field1 | Value
File2 | Field3 | Value

我期待回归:

WI.File1 | WI.Type | VAL.Value (Field1) | VAL.Value (Field2) | VAL.Value (Field3)

我不想排除 VAL 中为 Null 的记录。表之间始终存在文件到文件的关系。如果记录中未使用该值,则该字段将不在 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

解决方案


推荐阅读