加入两个SQL查询

31 sql database join

我有两个SQL查询,第一个是:

select Activity, SUM(Amount) as "Total Amount 2009"
from Activities, Incomes
where Activities.UnitName = ? AND
      Incomes.ActivityId = Activities.ActivityID
GROUP BY Activity
ORDER BY Activity;
Run Code Online (Sandbox Code Playgroud)

第二个是:

select Activity, SUM(Amount) as "Total Amount 2008"
from Activities, Incomes2008
where Activities.UnitName = ? AND
      Incomes2008.ActivityId = Activities.ActivityID
GROUP BY Activity
ORDER BY Activity;
Run Code Online (Sandbox Code Playgroud)

(不要介意'?',它们代表birt中的参数).我想要实现的目标如下:我想要一个返回与第一个查询相同的SQL查询,但是有一个额外的(第三个)列,看起来与"Total Amount 2008"完全相同(来自第二个查询).

Lia*_*iam 47

一些DBMS支持FROM (SELECT ...) AS alias_name语法.

将您的两个原始查询视为临时表.您可以像这样查询它们:

SELECT t1.Activity, t1."Total Amount 2009", t2."Total Amount 2008"
FROM (query1) as t1, (query2) as t2
WHERE t1.Activity = t2.Activity
Run Code Online (Sandbox Code Playgroud)


Qua*_*noi 16

SELECT Activity, arat.Amount "Total Amount 2008", abull.Amount AS "Total Amount 2009"
FROM
  Activities a
LEFT OUTER JOIN
  (
  SELECT ActivityId, SUM(Amount) AS Amount
  FROM Incomes ibull
  GROUP BY
    ibull.ActivityId
  ) abull
ON abull.ActivityId = a.ActivityID
LEFT OUTER JOIN
  (
  SELECT ActivityId, SUM(Amount) AS Amount
  FROM Incomes2008 irat
  GROUP BY
    irat.ActivityId
  ) arat
ON arat.ActivityId = a.ActivityID
WHERE a.UnitName = ?
ORDER BY Activity
Run Code Online (Sandbox Code Playgroud)


cgr*_*eno 11

我只想使用联盟

在第二个查询中添加额外的列名称,并''在其他查询中的所有相应位置添加

//reverse order to get the column names
select top 10 personId, '' from Telephone//No Column name assigned 
Union 
select top 10 personId, loanId from loan
Run Code Online (Sandbox Code Playgroud)