已关闭。此问题需要details or clarity。它目前不接受回答。
**希望改进此问题?**通过editing this post添加详细信息并阐明问题。
2天前关闭。
Improve this question的
我尝试联合两个表,然后为这两个表创建一行信息。
我的代码是:
with cte as (
select id,
dt_month_transaction,
dt_first_transaction,
transaction_total,
null as dt_month_redemption,
null as redemption_total
from tb_transaction
union
select id,
null as dt_month_transaction,
null as dt_first_transaction,
null as transaction_total,
dt_month_redemption,
redemption_total
from tb_redemption
)
字符串
然后,输出为:
| dt月交易|dt第一事务|交易总额|dt_month_reduction|赎回总额| redemption_total |
| --|--|--|--|--| ------------ |
| 2023-04-01 2023-04-01| 2019-10-01 2019-10-01|二十七点五零八||||
| |||2022-04-01 2022-04-01|一百零八点零| 108.0 |
| 2023-04-01 2023-04-01| 2019-10-01 2019-10-01|二十六点三零八||||
| |||2022-04-01 2022-04-01|一百零八点零| 108.0 |
但应该是这样的:
| dt月交易|dt第一事务|交易总额|dt_month_reduction|赎回总额| redemption_total |
| --|--|--|--|--| ------------ |
| 2023-04-01 2023-04-01| 2019-10-01 2019-10-01|二十七点五零八|2022-04-01 2022-04-01|一百零八点零| 108.0 |
| 2023-04-01 2023-04-01| 2019-10-01 2019-10-01|二十六点三零八|2022-04-01 2022-04-01|一百零八点零| 108.0 |
有办法完成我的任务吗?
3条答案
按热度按时间8e2ybdfx1#
假设id是相关列,并且您只需要两个表中都存在的id值的数据,您可以尝试使用如下连接
字符串
myzjeezk2#
加入,而不是联合。然后只需从两个表中选择所需的列mix和match。“INNER”连接只从两个表中选择具有匹配键的记录。
“LEFT JOIN”从
tb_transactions
(A)中提取所有记录,仅从tb_redemption
(B)中提取匹配记录。当没有匹配的B记录时,select
艾德B列将为空字符串
zbdgwd5y3#
UNION
不合并行。你需要一个
FULL [OUTER] JOIN
:字符串
这将保留所有行,即使其他表中没有匹配项。连接条件中的
USING
子句简化了查询。你总是得到一个id
,而不需要COALESCE(t.id, r.id)
。