sql - 使用 SQL 将相关表展平为多列
问题描述
我正在尝试使用 SQL 从 IFS 数据库(Oracle 后端)中的两个表中精确数据。一个表包含地址列表,另一个包含这些地址具有的类型。
例子:
地址表:
Address1
Address2
地址类型表
Address1, DELIVERY, TRUE
Address1, DOCUMENT, FALSE
Address1, PAY, FALSE
Address2, DELIVERY, FALSE
Address2, PAY, TRUE
我可以编写一个成功获取地址及其类型的查询,但我最终会为每种地址类型创建一个新行(本质上它看起来就像AddressType
表格)。
SELECT
a.address_ID,
at.address_type,
at.address_type_default_b
FROM
addresses a,
address_type at
WHERE
a.address_ID = at.address_ID
我想要的是一个将“展平”表格的查询,将每种类型移动到一列中。根据上面的示例,结果表将有 2 行,4 列,见下文。
期望的结果
Address1, TRUE, FALSE, FALSE
Address2, FALSE,*NULL*,TRUE
请注意,我不关心 Null、空白、NA 或 NULL 的含义
任何帮助将非常感激。我意识到我可以在 excel 中执行此操作,但考虑到数据的大小和我必须执行此操作的次数,在 SQL 中执行此操作会很好。
对不起,问题的格式很差......我不知道如何插入表格或让我的 sql 看起来正确。
解决方案
假设您的地址只有 3 个状态,并且每个状态只能发生一次:
如果您没有任何值,它将根据需要返回 null
select a.address_ID,max( case when address_type='Delivery' then address_type_default_b end )
,max( case when address_type='Document' then address_type_default_b end )
,max( case when address_type='Pay' then address_type_default_b end )
from address_table a
left join addresstype_table at on a.address_ID=b.address_ID
group by a.address_ID
推荐阅读
- php - $_POST 在 PHP 7.2.0 中不起作用
- apache - 目标 WSGI 脚本无法作为 python 模块加载,并使用 python 2.7 而不是 venv 中的 python 版本编译
- javascript - 我怎样才能强制这个承诺抛出特定的错误?
- laravel - Laravel:Dropzone js,得到 [object Object],但为什么呢?
- javascript - 如何使用 emailjs-mime-parser?
- python - 使用正则表达式将字符串拆分为单词
- reporting-services - 如何在 tablix 中向 SSRS 文本框添加可变长度结尾
- microsoft-translator - 我的培训工作似乎没有完成
- javascript - 在 Jest 中调试单个测试
- sql-server - Orchard CMS 连接外部 SQL Server