说我有两张桌子:
KnownHours:
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
UnknownHours:
ChargeNum Month Hours 111111 2/1/09 70 111111 3/1/09 40.5 222222 7/1/09 25.5
我需要将这些小时(忽略Month)分组到一个数据表中,以便我的预期结果如下:
ChargeNum CategoryID Hours 111111 1 90 111111 2 50 111111 Unknown 110.5 222222 1 40 222222 Unknown 25.5
我似乎无法弄清楚这一点.任何帮助将不胜感激!
编辑:我需要总结每个ChargeNum/Category组合的小时数.我更新了示例数据以反映这一点.
lc.*_*lc. 81
您需要使用它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
Run Code Online (Sandbox Code Playgroud)
注意 - 如果您使用UNION ALL如上所述,它并不比单独运行两个查询慢,因为它没有重复检查.
Ben*_*ter 11
在您的预期输出中,您的第二行总和不正确,根据表中的数据应该是40,但这里是查询:
Select ChargeNum, CategoryId, Sum(Hours)
From (
Select ChargeNum, CategoryId, Hours
From KnownHours
Union
Select ChargeNum, 'Unknown' As CategoryId, Hours
From UnknownHours
) As a
Group By ChargeNum, CategoryId
Order By ChargeNum, CategoryId
Run Code Online (Sandbox Code Playgroud)
这是输出:
ChargeNum CategoryId
---------- ---------- ----------------------
111111 1 40
111111 2 50
111111 Unknown 70
222222 1 40
222222 Unknown 25.5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
284722 次 |
| 最近记录: |