对于提交有关此主题的另一个问题,我深表歉意,但我已经阅读了许多关于此的答案,但我似乎无法让它为我工作。
我有三张表需要加入并获取信息。其中一张表只有 3 列,垂直存储数据。我想将该数据转换为水平格式。
如果我只是加入并拉取,数据将如下所示:
SELECT
a.app_id,
b.field_id,
c.field_name,
b.field_value
FROM table1 a
JOIN table2 b ON a.app_id = b.app_id
JOIN table3 c ON b.field_id = c.field_id --(table3 is a lookup table for field names)
结果:
app_id | field_id | field_name | field_value
-----------------------------------------------------
1234 | 101 | First Name | Joe
1234 | 102 | Last Name | Smith
1234 | 105 | DOB | 10/15/72
1234 | 107 | Mailing Addr | PO BOX 1234
1234 | 110 | Zip | 12345
1239 | 101 | First Name | Bob
1239 | 102 | Last Name | Johnson
1239 | 105 | DOB | 12/01/78
1239 | 107 | Mailing Addr | 1234 N Star Ave
1239 | 110 | Zip | 12456
相反,我希望它看起来像这样:
app_id | First Name | Last Name | DOB | Mailing Addr | Zip
--------------------------------------------------------------------------
1234 | Joe | Smith | 10/15/72 | PO BOX 1234 | 12345
1239 | Bob | Johnson | 12/01/78 | 1234 N Star Ave | 12456
过去,我只是求助于在我的数据中查找我需要的所有 field_id,并为每个字段创建 CASE 语句。用户正在使用的应用程序包含多个产品的数据,每个产品包含不同的字段。考虑到支持的产品数量和每个产品的字段数量(比我上面展示的基本示例多得多),查找它们并写出大量 CASE 语句需要很长时间。
我想知道是否有一些作弊代码可以实现我所需要的,而无需查找 field_ids 并将内容写出来。我知道 PIVOT 功能可能是我正在寻找的,但是,我似乎无法让它正常工作。
觉得你们能帮上忙吗?