我有两张桌子-表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/

10-10 10:46