我有两张桌子-表1和表2。表1如下:
ID
A01
A02
A03
A04
A05
表2如下:
DeptID Name ID
5 groupA A01
5 groupA A03
5 groupA A04
5 groupB A02
5 groupB A04
5 groupB A05
表3:
Codename DisplayName
groupA Humti
groupB Dumpti
我希望输出为:
DeptID Name ID Result
5 Humpti A01 1
5 Humpti A02 0
5 Humpti A03 1
5 Humpti A04 1
5 Humpti A05 0
5 Dumpti A01 0
5 Dumpti A02 1
5 Dumpti A03 0
5 Dumpti A04 1
5 Dumpti A05 1
在这里,groupa有3个id。a01,a03,a04。因此,输出中的result列的值为1。但对于a02,a05 groupa没有关联,因此结果列值为0。我们只需要记住groupa将与table1的所有id进行比较。
编辑:所有的解决方案都工作得很好,但是我可以根据表3中的值,将“groupa”替换为“humpti”,将“groupb”替换为“dumpti”吗?是吗?
谢谢。。
最佳答案
SELECT t2.deptId, t2.name, table1.id, CASE WHEN table2.id IS NULL THEN 0 ELSE 1 END result
FROM table1, (SELECT distinct deptId, group from table2) t2
LEFT OUTER JOIN table2 ON t2.name = table2.name AND t2.ID = table1.ID
编辑,针对更改的问题:
SELECT t2.deptId, table3.name, table1.id, CASE WHEN table2.id IS NULL THEN 0 ELSE 1 END result
FROM table1, table3, (SELECT distinct deptId, name from table2) t2
LEFT OUTER JOIN table2 ON t2.name = table2.name AND t2.ID = table1.ID
WHERE table3.codename = t2.name
关于sql-server - 将一个表的一列与另一表的数据匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8562946/