我在使用 WITH 语句和 JOIN 将 2 个查询组合成 1 个查询时遇到问题。我已经尝试过了,但没有一个能按照我想要的方式输出。
期望的输出
?
我在使用 WITH 语句和 JOIN 将 2 个查询组合成 1 个查询时遇到问题。我已经尝试过了,但没有一个能按照我想要的方式输出。
?
因此,只需查看您的 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 办公室之后丢失了所有内容,我假设你已经厌倦了打字并且你想展示它们。如果没有,您可以添加一个过滤器将它们取出。
您的原始加入版本中缺少两件事,
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
;
希望以下方法可以解决您的问题:
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;
感谢您的所有回复先生!我已经得到了答案
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
;