sql - 将两个表合并为一个输出

标签 sql union

假设我有两个表:

已知时间:

ChargeNum    CategoryID    Month    Hours
111111       1             2/1/09   10
111111       1             3/1/09   30
111111       1             4/1/09   50
222222       1             3/1/09   40
111111       2             4/1/09   50

未知时间:

ChargeNum   Month   Hours
111111      2/1/09  70
111111      3/1/09  40.5
222222      7/1/09  25.5

我需要将这些时间(忽略月份)分组到一个数据表中,以便我的预期结果如下:

ChargeNum    CategoryID     Hours
111111       1              90
111111       2              50
111111       Unknown        110.5
222222       1              40
222222       Unknown        25.5

我似乎无法弄清楚这一点。任何帮助将不胜感激!

编辑:我需要对每个 ChargeNum/Category 组合的小时数进行求和。我更新了示例数据以反射(reflect)这一点。

最佳答案

您需要使用UNION来组合两个查询的结果。对于您的情况:

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,它不会比单独运行两个查询慢,因为它不进行重复检查。

关于sql - 将两个表合并为一个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1227835/

相关文章:

php - 通过PHP有条件地统计MYSQL列行(多个数据库)并输出数据

sql - Material list 的递归查询

c - union整数成员返回union中的数据,float显示异常

sql - 对来自 Union 的 SQL 结果进行分组

java - 使用 OOP 设计简单的 IMDB 风格数据库

python - 如何找到两个字符串的并集并保持顺序

多个列表的java高效连接

c# - 数据未插入到 Azure Sql 数据库中

c# - 为同义词表创建字符变异算法

sql - ORDER BY euclidean distance 并返回距离?