Nil*_*are 0 sql sql-server sql-server-2008
我有三张桌子
EmployeeConfig 包含:
ID CompanyId FieldName Label
---------------------------------------
9 1 DEPARTMENT DEPARTMENT
10 1 PTLOCATION Prof.Tax Location
11 1 DESIGNATION Designation
Run Code Online (Sandbox Code Playgroud)
Combovalues 包含:
ID CompanyId FieldName ComboValue
--------------------------------------------
11 1 DEPARTMENT Management
12 1 DEPARTMENT Outsource
13 1 DEPARTMENT Trims
14 1 DEPARTMENT Logistics
55 1 DESIGNATION Deputy Executive Director
56 1 DESIGNATION Manager
57 1 DESIGNATION Sr Manager - Trims
58 1 DESIGNATION Manager - Exports
59 1 DESIGNATION Planning Manager
Run Code Online (Sandbox Code Playgroud)
EmployeeDetail 包含:
ID CompanyId Code Name Category Department Designation
-------------------------------------------------------------
1 1 AI001 ABC 1 11 55
2 1 S 003 MNO 1 12 56
3 1 S 022 PQR 1 13 57
4 1 S 030 XYZ 1 14 58
Run Code Online (Sandbox Code Playgroud)
EmployeeConfig 包含所有动态列ComboValues包含基于EmployeeConfig表的所有值EmployeeDetail包含ComboValues表的idEmployeeDetail包含基于的动态列EmployeeConfig.我想,以取代动态列值ComboValues的EmployeeDetail表.
我试过这个查询:
SELECT
E.Id, E.NAME,
C.ComboValue AS Designation,
Cdep.ComboValue AS department
FROM
[Aquara7bc772839].EmployeeDetail AS E
FULL JOIN
ComboValues C ON E.Designation = C.Id
FULL JOIN
ComboValues Cdep ON E.Department = Cdep.Id
INNER JOIN
EmployeeConfig Ex ON E.CompanyId = Ex.CompanyId
WHERE
E.CompanyId = 1
Run Code Online (Sandbox Code Playgroud)
但上面的查询没有返回下面的预期输出:
ID CompanyId Code Name Category Department Designation
-------------------------------------------------------------------------
1 1 AI001 ABC 1 Management Deputy Executive Director
2 1 S 003 MNO 1 Outsource Manager
3 1 S 022 PQR 1 Trims Sr Manager - Trims
4 1 S 030 XYZ 1 Logistics Manager - Exports
Run Code Online (Sandbox Code Playgroud)
你可以这样做一个双连接:
select e.id,
e.companyid,
e.code,
e.name,
e.category,
c1.combovalue department,
c2.combovalue designation
from EmployeeDetail e
left join Combovalues c1
on e.department = c1.id
and c1.fieldname = 'DEPARTMENT'
left join Combovalues c2
on e.designation = c2.id
and c2.fieldname = 'DESIGNATION';
Run Code Online (Sandbox Code Playgroud)
您可以根据您拥有的其他关系(如公司ID等)包含其他加入条款.
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |