从每一个独特的返回列加入到各州:
select m.Name, s1.Enumeration as State1, s2.Enumeration as State2, s3.Enumeration as State3
from MasterTable m
left join StateTable s1 on m.State1 = s1.ID
left join StateTable s2 on m.State2 = s2.ID
left join StateTable s3 on m.State3 = s3.ID
返回从3所有状态的1列联接:
select m.Name, ISNULL(s1.Enumeration + ',','')
+ ISNULL(s2.Enumeration + ',','')
+ ISNULL(s3.Enumeration,'') as Enumeration
from MasterTable m
left join StateTable s1 on m.State1 = s1.ID
left join StateTable s2 on m.State2 = s2.ID
left join StateTable s3 on m.State3 = s3.ID
还有列的查询。 ..
select m.Name,
ISNULL((select Enumeration from StateTable where ID = m.State1),'') as State1,
ISNULL((select Enumeration from StateTable where ID = m.State2),'') as State2,
ISNULL((select Enumeration from StateTable where ID = m.State3),'') as State3
from MasterTable m
+1:添加LEFT JOIN替代 – 2010-08-10 18:32:02
@ lumberjack4:您发布的ANSI-89语法在性能上没有区别,和福斯科的ANSI-92。 ANSI-92的好处是标准化和广泛支持的OUTER JOIN(至少左,右)语法。 – 2010-08-10 18:33:13
谢谢你们俩..当我编辑添加第二个查询时意识到了这一点。 – Fosco 2010-08-10 18:34:12