【发布时间】:2023-02-04 09:06:39
【问题描述】:
我正在尝试加入通过这样的查询获得的多个数据:
select
TO_VARCHAR(CREATE_TIME, 'yyyy-MM') as YEAR_MONTH,
COUNT(1) as DESIRED_VALUE
from
MY_TABLE
where
FIELD = 'DESIRED_VALUE'
group by 1;
这导致数据如下:
YEAR DESIRED_VALUE1
2022-09 52
2022-10 117
2022-11 95
2023-01 73
YEAR_MONTH DESIRED_VALUE2
2022-11 35
2022-12 30
2023-01 29
我想以这样的表格结束:
YEAR_MONTH DESIRED_VALUE1 DESIRED_VALUE2
2022-09 52 NULL
2022-10 117 NULL
2022-11 95 35
2022-12 53 30
2023-01 73 29
我不知道每个查询将返回哪些日期,如果这有意义的话,所以我无法推断它是否是左连接,例如。所以我正在做一个完整的
with result_1 as
(
query1
),
result_2 as
(
query2
)
select *
from
result_1
full outer join result_2
on
result_1.YEAR_MONTH = result_2.YEAR_MONTH
这给了我这个:
YEAR_MONTH DESIRED_VALUE2 YEAR_MONTH_2 DESIRED_VALUE1
2023-01 29 2023-01 73
NULL NULL 2022-10 117
2022-11 35 2022-11 95
NULL NULL 2022-09 52
2022-12 30 NULL NULL
但我想显示一个 YEAR MONTH 列,它显示所有现有值:
YEAR_MONTH DESIRED_VALUE2 DESIRED_VALUE1
2023-01 29 73
2022-10 NULL 117
2022-11 35 95
2022-09 NULL 52
2022-12 30 NULL
为了解决这个问题,我使用:
COALESCE(DESIRED_VALUE1.YEAR_MONTH, DESIRED_VALUE2.YEAR_MONTH) as YEAR_MONTH
但是,如果我添加更多数据:
with result_1 as
(
select
TO_VARCHAR(CREATE_TIME, 'yyyy-MM') as YEAR_MONTH,
COUNT(1) as DESIRED_VALUE1
from
MY_TABLE
where
STATUS = 'DESIRED_VALUE1'
group by 1
),
result_2 as
(
select
TO_VARCHAR(CREATE_TIME, 'yyyy-MM') as YEAR_MONTH,
COUNT(1) as DESIRED_VALUE2
from
MY_TABLE
where
STATUS = 'DESIRED_VALUE2'
group by 1
),
result3 as
(
select
TO_VARCHAR(CREATE_TIME, 'yyyy-MM') as YEAR_MONTH,
COUNT(1) as DESIRED_VALUE3
from
MY_TABLE
where
STATUS = 'DESIRED_VALUE3'
group by 1
)
select
COALESCE(DESIRED_VALUE1.YEAR_MONTH, DESIRED_VALUE2.YEAR_MONTH, DESIRED_VALUE3.YEAR_MONTH) as YEAR_MONTH,
DESIRED_VALUE1,
DESIRED_VALUE2,
DESIRED_VALUE3
from
result_1
full outer join
result_2
on
result_1.YEAR_MONTH = result_2.YEAR_MONTH
full outer join
result_3
on
result_2.YEAR_MONTH = result_3.YEAR_MONTH
order by YEAR_MONTH desc;
我开始重复YEAR_MONTH
YEAR_MONTH DESIRED_VALUE1 DESIRED_VALUE2 DESIRED_VALUE3
2023-01 73 29 83
2022-12 53 30 57
2022-11 95 35 71
2022-10 NULL 39 NULL
2022-10 117 NULL NULL
2022-09 18 NULL NULL
2022-09 52 NULL NULL
我不确定解决此问题的最佳方法是什么。
【问题讨论】:
-
您使用的是哪个数据库系统。请标记它
-
完成,fyi 雪花。谢谢@nbk。
标签: sql duplicates snowflake-cloud-data-platform outer-join coalesce