首页 >数据库 >mysql教程 >我们如何将已知时间和未知时间表合并为统一时间报告?

我们如何将已知时间和未知时间表合并为统一时间报告?

DDD
DDD原创
2024-12-29 08:32:14339浏览

How Can We Combine KnownHours and UnknownHours Tables for a Unified Hours Report?

组合表进行统一输出

简介:
在处理多个表时,有必要将它们合并以提供全面且有意义的输出。组合表涉及连接、并集和聚合等技术。

问题陈述:
当前的任务是将两个表(KnownHours 和 UnknownHours)组合成一个输出,按 ChargeNum 和 CategoryID 对小时进行分组,忽略月份。

表详细信息:

Table Column Description
KnownHours ChargeNum Unique charge number
KnownHours CategoryID Category associated with the charge
KnownHours Month Month when the charge was incurred
KnownHours Hours Known hours for the charge
UnknownHours ChargeNum Unique charge number
UnknownHours Month Month when the charge was incurred
UnknownHours Hours Unknown hours for the charge

期望输出:
期望输出是具有以下结构的单个表:

Table Column Description
Consolidated ChargeNum Unique charge number
Consolidated CategoryID Category associated with the charge or 'Unknown'
Consolidated Hours Total hours for the charge

解决方案:
为了获得所需的输出,我们将利用 SQL 中的 UNION 操作。 UNION 将多个查询的结果合并到一个表中。在本例中,我们将运行两个查询,一个针对 KnownHours 表,另一个针对 UnknownHours 表。这些查询将聚合每个 ChargeNum 和 CategoryID 的小时数(以及 UnknownHours 的“Unknown”)。

KnownHours 表的第一个查询:

SELECT ChargeNum, CategoryID, SUM(Hours)
FROM KnownHours
GROUP BY ChargeNum, CategoryID

UnknownHours 表的第二个查询:

SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours)
FROM UnknownHours
GROUP BY ChargeNum

最后,我们将使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn