全联了 4个表出来这样的
3 个解决方案
#2
select def_id,def_id1,def_id2,def_id3,id
,(case when isnull(def_id,0)>0 then 1 else 0 end)
+(case when isnull(def_id1,0)>0 then 1 else 0 end)
+(case when isnull(def_id2,0)>0 then 1 else 0 end)
+(case when isnull(def_id3,0)>0 then 1 else 0 end)
as 关联成功列数
from table1 a
left join table2 b on a.def_id=b.def_id1
left join table3 c on a.def_id=c.def_id2
left join table4 d on a.def_id=d.def_id3
#3
看你的数据,各个ID的值都是一样的,估计你是想返回第一个非NULL值,随便哪个列
可以用COALESCE函数,比如select COALESCE(def_id,def_id1,def_id2,def_id3,id) as id from table 这样
可以用COALESCE函数,比如select COALESCE(def_id,def_id1,def_id2,def_id3,id) as id from table 这样
#1
认真看了一下还是没有明白你的意思。
看看这个学习下怎么提问 https://bbs.csdn.net/topics/391996442
看看这个学习下怎么提问 https://bbs.csdn.net/topics/391996442
#2
select def_id,def_id1,def_id2,def_id3,id
,(case when isnull(def_id,0)>0 then 1 else 0 end)
+(case when isnull(def_id1,0)>0 then 1 else 0 end)
+(case when isnull(def_id2,0)>0 then 1 else 0 end)
+(case when isnull(def_id3,0)>0 then 1 else 0 end)
as 关联成功列数
from table1 a
left join table2 b on a.def_id=b.def_id1
left join table3 c on a.def_id=c.def_id2
left join table4 d on a.def_id=d.def_id3
#3
看你的数据,各个ID的值都是一样的,估计你是想返回第一个非NULL值,随便哪个列
可以用COALESCE函数,比如select COALESCE(def_id,def_id1,def_id2,def_id3,id) as id from table 这样
可以用COALESCE函数,比如select COALESCE(def_id,def_id1,def_id2,def_id3,id) as id from table 这样