SQL中动态表中的条件联接
我有一个包含4个表的简单查询。它工作正常,现在我需要在该查询中再添加一个联接,但这次表会根据该查询中的一个参数而变化 我的查询如下所示:SQL中动态表中的条件联接,sql,sql-server-2012,Sql,Sql Server 2012,我有一个包含4个表的简单查询。它工作正常,现在我需要在该查询中再添加一个联接,但这次表会根据该查询中的一个参数而变化 我的查询如下所示: SELECT pat.Id,dgroup.Diagnosis as 'Description', ntest.Testname as 'TestName', dgroup.Id as 'ProrityId', subt.TestSubType, **ntest.SubGroupId** from pat.tbl_PatientTestReco
SELECT pat.Id,dgroup.Diagnosis as 'Description', ntest.Testname as 'TestName',
dgroup.Id as 'ProrityId', subt.TestSubType, **ntest.SubGroupId**
from pat.tbl_PatientTestRecord pat
JOIN tbl_Test_DiagnosisGroup InTest on pat.IndividualTestId=InTest.Id
JOIN tbl_NrlTests nTest ON InTest.TestId=nTest.id
JOIN tbl_DiagnosisGroup dgroup ON Intest.DGId=dgroup.id
Left Join
**tbl_vary**
- tbl\u变化取决于ntest.subseid。在
中可能会出现3个表tbl\u vary
由于我的SQL有点弱,我将非常感谢为此提供适当的解决方案。一种可能是联合子查询:
SELECT pat.Id,dgroup.Diagnosis as 'Description', ntest.Testname as 'TestName',
dgroup.Id as 'ProrityId', subt.TestSubType, **ntest.SubGroupId**
FROM pat.tbl_PatientTestRecord pat
JOIN tbl_Test_DiagnosisGroup InTest on pat.IndividualTestId=InTest.Id
JOIN tbl_NrlTests nTest ON InTest.TestId=nTest.id
JOIN tbl_DiagnosisGroup dgroup ON Intest.DGId=dgroup.id
LEFT JOIN
(SELECT v1.SubGroupId, v1.Relevant_Col_1 AS rc1, v1.Relevant_Col_2 AS rc2
FROM table_variant_1 AS v1
WHERE v1.SubGroupId = ntest.SubGroupID
UNION
SELECT v2.SubGroupId, v2.Alternative_1 AS rc1, v2.Alternative_2 AS rc2
FROM table_variant_2 AS v2
WHERE v2.SubGroupId = ntest.SubGroupID
UNION
SELECT v3.SubGroupId, v3.Other_Source_1 AS rc1, v3.Other_Source_2 AS rc2
FROM table_variant_3 AS v3
WHERE v3.SubGroupId = ntest.SubGroupID
) AS u
ON u.SubGroupId = ntest.SubGroupId
在子查询中不使用WHERE子句可能会更好,或者可能有其他方法来指定与UNION查询的联接……对于如何构造子查询,您还没有提供那么多线索。您使用的是什么RDBMS?您所问的问题非常具体。@peterm我使用的是sql server 2012。。