【发布时间】:2021-04-20 01:39:57
【问题描述】:
所以我是 sql 新手,我需要一些编码帮助。 这是我的桌子
Table_A
Customer ID_2019
A 600
A 697
A 932
Table_B
Customer ID_2018
A 600
A 697
这是我将两个表合并在一起时的代码 --合并结果
select a.*,b.id_2018 into #temp
from Table_A as a left join Table_B as b
on a.customer=b.customer;
这是我的结果:
Results
Customer ID_2019 ID_2018
918 600 600
918 600 697
918 697 600
918 697 697
918 932 600
918 932 697
Here are the results that I desire:
--Desired Results
Customer ID_2019 ID_2018
918 600 600
918 697 697
918 932 -
我想将客户的 ID_2019 和 ID_2018 合并在一起;对于第三个 ID_2019 (932),我希望 ID_2018 有一个空白或破折号。
--我想在上面放一个指示器,看看 ID_2019 是否与 ID_2018 匹配,并创建一个 1 或 0 的新变量。
--drop table #match_nomatch;
select *,
case when ID_2019=ID_2018 then 1 else 0 end as Match into #Match_NoMatch
from #temp
group by customer, ID_2019, ID_2018;
这是我的结果:
--The results for ID_2018 are repeating the same 2 id's over again
Customer ID_2019 ID_2018 Match
918 600 600 1
918 600 697 0
918 697 600 0
918 697 697 1
918 932 600 0
918 932 697 0
这是我想要的结果:
Desired Results
Customer ID_2019 ID_2018 Match
918 600 600 1
918 697 697 1
918 932 - 0
对于上面的代码,如果 ID_2019 和 ID_2018 匹配,则输入 1,否则输入 0。对于第三个 Id_2019,我希望 ID_2018 为空白或破折号。
任何帮助将不胜感激。
【问题讨论】:
-
如果 id_2019 不存在但 id_2018 存在怎么办?您是否只希望结果中包含 2019 年的所有 id?
-
没有。如果信息在 ID_2018 或 ID_2019 中均不存在,我想要空格或破折号。
标签: sql left-join matching indicator