问题描述
表A
---------------------
ProjectID Column1
---------------------
1 Test1
1 Test2
1 Test3
---------------------
表B
---------------------
ProjectID Column1
---------------------
1 Test1
1 Test2
如果表B中的值可用,我想得到以下结果,然后返回“ Selected” ,否则-“ Unselected” 。
-----------------------
Column1 Output
-----------------------
Test1 Selected
Test2 Selected
Test3 Unselected
Select A.Column1,CASE When A.Column1=B.Column1 Then 'Selected' ELSE 'Unselected' as Output
from Table A LEFT JOIN Table B on A.PrjectID=B.ProjectID
解决方法
Select A.Column1,case when max(B.Column1) is null
then 'unselected'
else 'selected'
end as Output
from Table A
LEFT JOIN Table B on A.Column1 = B.Column1
group by A.Column1
,
嗨,我修改了您的代码,请尝试以下解决方案:
Select A.Column1,CASE When A.Column1=B.Column1 Then 'Selected' ELSE 'UnSelected'
END as Output_
from Table A
LEFT JOIN Table B on A.PrjectID=B.ProjectID
,
类似的事情会起作用(即使表A和B中的ProjectID超过1个)。
数据
drop table if exists #tTESTa;
go
select * INTO #tTESTa from (values
(1,'test1'),(1,'test2'),'test3')) V(ProjectID,Column1);
drop table if exists #tTESTb;
go
select * INTO #tTESTb from (values
(1,'test2')) V(ProjectID,Column1);
查询
select ta.Column1,case when tb.ProjectID is null then 'Unselected' else 'Selected' end OutPut
from #tTESTa ta
left join #tTESTb tb on ta.ProjectID=tb.ProjectID
and ta.Column1=tb.Column1;
输出
Column1 OutPut
test1 Selected
test2 Selected
test3 Unselected