组合表进行统一输出
简介:
在处理多个表时,有必要将它们合并以提供全面且有意义的输出。组合表涉及连接、并集和聚合等技术。
问题陈述:
当前的任务是将两个表(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中文网其他相关文章!