Create table test
(
id int,
Name varchar(50),
ObjType varchar(50)
Typeval varchar(50)
)
我还有另外两个名为tbl1和tbl2
的表根据表“test”中ObjType的值,我必须从tbl1或tbl2中检索列。 注意:我要检索的列名在tbl1和tbl2中不相同。
类似的东西:
SELECT Name, Objtype,id, typeval,
Desc = CASE WHEN objtype='abc' THEN
SELECT col1 from tbl1 WHERE cond=id (col from table test)
WHEN objtype = 'xyz' THEN
SELECT cola from tbl2 WHERE crit = id (col from table test)
任何人都可以指导我
答案 0 :(得分:0)
尝试使用union语句。
SELECT t.objtype as objtype, t1.col1 as fieldvalue
FROM test t LEFT JOIN tbl1 t1 ON t.cond= t1.id
WHERE t.objtype = 'abc'
UNION ALL
SELECT t.objtype as objtype, t2.cola as fieldvalue
FROM test t LEFT JOIN tbl2 t2 ON t.crit= t2.id
WHERE t.objtype = 'xyz'
它需要做一些改变,但它可能会对你有帮助。
答案 1 :(得分:0)
我通过加入表t1和t2
来创建CTE来解决问题WITH CTE AS (从tbl1中选择col1,objtype 联盟 SELECT col1,来自tbl2的objtype)
SELECT Name,Objtype,id,typeval,(SELECT Col1 FROM CTE C WHERE C.ObjType = t.ObjType)as DEscription 来自TEst t
感谢所有发表了宝贵意见的人