将两个表组合为一个输出
数据库操作通常需要将多个源的数据合并为一个内聚的输出。一个常见的挑战是将具有相似结构但不同类别的表组合在一起。考虑以下问题:
您有两个表,“KnownHours”和“UnknownHours”,其中的列包括 ChargeNum(唯一标识符)、CategoryID(类别分配)、Month(日期)和 Hours(实际值)。任务是将这些表(忽略“月份”列)组合成一个数据表,并按 ChargeNum 和 CategoryID 对“小时”进行分组。
预期输出为:
ChargeNum CategoryID Hours 111111 1 90 111111 2 50 111111 Unknown 110.5 222222 1 40 222222 Unknown 25.5
要实现此目的,我们可以利用 UNION 运算符,它组合两个查询的结果。对于此问题,我们将构建两个查询:
查询 1:
SELECT ChargeNum, CategoryID, SUM(Hours) FROM KnownHours GROUP BY ChargeNum, CategoryID
此查询检索 ChargeNum、CategoryID 以及每个查询的小时总和来自“KnownHours”表的组合。
查询2:
SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours) FROM UnknownHours GROUP BY ChargeNum
此查询检索“UnknownHours”表中每个条目的 ChargeNum 和小时总和,并将“Unknown”指定为 CategoryID。
组合两者使用 UNION ALL 的查询会产生所需的输出:
SELECT ChargeNum, CategoryID, SUM(Hours) FROM KnownHours GROUP BY ChargeNum, CategoryID UNION ALL SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours) FROM UnknownHours GROUP BY ChargeNum
UNION ALL 运算符合并结果而不删除重复项,提供组合数据的完整视图。
以上是如何将两个结构相似但类别不同的表合并为一个输出表?的详细内容。更多信息请关注PHP中文网其他相关文章!