-1

我在使用 WITH 语句和 JOIN 将 2 个查询组合成 1 个查询时遇到问题。我已经尝试过了,但没有一个能按照我想要的方式输出。

期望的输出

想要的输出?

单独的输出

标称 A

标称 B

加入结果

使用 JOIN 组合

4

4 回答 4

0

因此,只需查看您的 2 个结果集和您想要在其唯一键 Office 和月份上将 queryresult1 与 queryresult2 左外连接的所需输出。这里的 With 子句并没有完成任何特别的事情:

    Select A.Office, A.Month, A.Nominal_A, B.Nominal_B
    From (insert query1 here) A  Left Outer Join
               (Insert query2 here) B on A.Office=B.Office and A.Month=B.Month

我注意到你想要的结果集在 SLO 办公室之后丢失了所有内容,我假设你已经厌倦了打字并且你想展示它们。如果没有,您可以添加一个过滤器将它们取出。

您的原始加入版本中缺少两件事,

  1. 您需要两个查询之间的左外连接,以便查询 2 中缺少的办公室不会导致 Query1 中的数据消失。
  2. 您需要将连接键完全指定为 Office=Office AND Month=Month。通过仅指定月份,您是在告诉 SQL 为您提供 Query1 和 Query2 中办公室的所有组合。
于 2021-04-14T00:09:20.123 回答
0
WITH your_first_query AS (
  SELECT ...
)
, your_second_query AS (
  SELECT ...
)
SELECT your_first_query.OFFICE
     , your_first_query.MONTH
     , your_first_query.NOMINAL_A
     , your_second_query.NOMINAL_B
FROM   your_first_query
 INNER
  JOIN your_second_query
    ON your_second_query.OFFICE = your_first_query.OFFICE
   AND your_second_query.MONTH = your_first_query.MONTH
ORDER
    BY your_first_query.OFFICE
     , your_first_query.MONTH
;
于 2021-04-13T12:17:14.190 回答
0

希望以下方法可以解决您的问题:

WITH NOMINAL_A_CTE (OFFICE, MONTH, NOMINAL_A)
AS
(
SELECT OFFICE, MONTH, NOMINAL_A
FROM NOMINAL_A_QUERY
),
NOMINAL_B_CTE (OFFICE, MONTH, NOMINAL_B)
AS
(
SELECT OFFICE, MONTH, NOMINAL_B
FROM NOMINAL_B_QUERY
)

SELECT A.OFFICE, A.MONTH, SUM(A.NOMINAL_A), SUM(B.NOMINAL_B)
FROM NOMINAL_A_CTE AS A INNER JOIN NOMINAL_B_CTE AS B
ON A.OFFICE = B.OFFICE AND A.MOTNTH = B.MONTH

GROUP BY A.OFFICE, A.MONTH
ORDER BY A.OFFICE, A.MONTH;
于 2021-04-13T16:12:35.263 回答
0

感谢您的所有回复先生!我已经得到了答案

WITH your_first_query AS (
  SELECT ...
)
, your_second_query AS (
  SELECT ...
)
SELECT your_first_query.OFFICE
     , your_first_query.MONTH
     , your_first_query.NOMINAL_A
     , your_second_query.NOMINAL_B
FROM   your_first_query
 FULL
 OUTER
  JOIN your_second_query
    ON your_second_query.OFFICE = your_first_query.OFFICE
   AND your_second_query.MONTH = your_first_query.MONTH
ORDER
    BY your_first_query.OFFICE
     , your_first_query.MONTH
;
于 2021-04-14T02:21:32.163 回答