40

我有两个查询返回单独的结果集,并且查询返回正确的输出。

如何将这两个查询合并为一个,以便获得一个结果集,每个结果位于单独的列中?

查询一:

SELECT SUM(Fdays) AS fDaysSum From tblFieldDays WHERE tblFieldDays.NameCode=35 AND tblFieldDays.WeekEnding=?

查询 2:

SELECT SUM(CHdays) AS hrsSum From tblChargeHours WHERE tblChargeHours.NameCode=35 AND tblChargeHours.WeekEnding=?

谢谢。

4

4 回答 4

77

您可以在选择查询http://sqlfiddle.com/#!2/ca27b/1中为查询和选择它们起别名

SELECT x.a, y.b FROM (SELECT * from a) as x, (SELECT * FROM b) as y
于 2013-05-03T17:26:04.380 回答
14

您可以使用CROSS JOIN

SELECT *
FROM (  SELECT SUM(Fdays) AS fDaysSum 
        FROM tblFieldDays 
        WHERE tblFieldDays.NameCode=35 
        AND tblFieldDays.WeekEnding=1) A -- use you real query here
CROSS JOIN (SELECT SUM(CHdays) AS hrsSum 
            FROM tblChargeHours 
            WHERE tblChargeHours.NameCode=35 
            AND tblChargeHours.WeekEnding=1) B -- use you real query here
于 2013-05-03T17:18:10.667 回答
7

如果您希望它们在同一行中,您还可以使用 CTE 获取您想要的信息组并将它们连接在一起。示例,取决于您使用的 SQL 语法,此处:

WITH group1 AS (
  SELECT testA
    FROM tableA
),
group2 AS (
  SELECT testB
    FROM tableB 
)
SELECT *
  FROM group1
  JOIN group2 ON group1.testA = group2.testB --your choice of join
;

您可以根据要提取的数据来决定您想要什么样的 JOIN,并确保在您从中获取信息的组中具有相同的字段,以便将它们全部放在一行中。如果您有多个列,请确保正确命名它们,以便您知道哪个是哪个。此外,出于性能考虑,CTE 是要走的路,而不是内联 SELECT 等。希望这可以帮助。

于 2017-11-20T17:43:34.227 回答
-2

如何将 4 个查询合并为一个查询

显示下面的查询

  1. 待决案件总数 + 本月提交的 2 个案件(基于 sysdate)+ 案件总数(1+2)+ 没有。已处置的案件,其中 nse=已处置 + 否。未决案件数(除了 nse <> 已处理)

nsc = 案件性质

每月6日进行报告

(月报从上月05日算到本月05日)

于 2017-01-28T09:24:52.157 回答