我有一张如下表:
ID Role CompanyID
1 T 123
2 S 1234
3 B 12345
T&#39>公司ID与S&B公司ID有关系。他们之间关系的价值在下面的另一个表中:
Rel CompanyId1 CompanyId
Private 1234 123
Public 12345 123
当然首先我必须加入这两个表,然后我必须从表2中得到T(123)与S(1234)和B(12345)的关系,并根据我必须创建如果T与S和B的关系是私有的那么将是另一列,然后是1,如果是公共然后是0
应该是这样的
Id Role Companyid BoolCol
1 T 123 for T there is no need to fill this col can be null
2 S 1234 1 becoz rel b/w T and S is private
3 B 12345 0 becoz rel b/w T and B is public
与其他公司的关系只与T有关,而不是相反
任何帮助将不胜感激.......
由于
答案 0 :(得分:0)
你可以试试这段代码:
select id, role,a.companyid,rel,case when rel='Private' then 1 when rel='Public' then 0 else null end as boolcol
from first_table a left join relation_table b
on a.companid=b.companyid1
答案 1 :(得分:0)
您可以使用第一个表中的CompanyId上的左连接和第二个表中的CompanyId1加入表格,并使用 case 语句来获取BoolCol列。
select a.*,case when b.rel = 'Private' then 1
when b.rel = 'Public' then 0
else NULL
end as BoolCol
from table1 a
left join
table2 b
on a.companyid = b.companyid1;
如果您有任何疑问,请与我联系。