我想做以下事情:
请参阅以下示例:
表A:
表B
预期产出:
如何在SQL中编写此代码?我使用Teradata。
答案 0 :(得分:1)
您可以group by
并使用union all
来组合来自tableA和tableB的查询的结果。
select name, age, max(salaryA), max(salaryB), max(salaryA) - max(salaryB) as difference
from (
select name, age, sum(salary) as salaryA, null as salaryB
from tablea
group by name, age
union all
select name, age, null as salaryA, sum(salary) as salaryB
from tableb
group by name, age) t
group by name, age
答案 1 :(得分:0)
SELECT A.name, A.age, A.SalaryA, B.SalaryB, A.SalaryA - B.SalaryB as difference
FROM (
SELECT name, age, SUM(Salary) as SalaryA
FROM TableA
GROUP BY name, age
) as A
INNER JOIN
(
SELECT name, age, SUM(Salary) as SalaryB
FROM TableB
GROUP BY name, age
) as B
ON A.name = B.name
AND A.age = B.age