根据 MSSQL 中的列值从 table 中的任一个中检索数据
Retrieve data from either of table based on column value in MSSQL
Create table test
(
id int,
Name varchar(50),
ObjType varchar(50)
Typeval varchar(50)
)
我还有另外 2 个 table 分别命名为 tbl1 和 tbl2
根据 table "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)
谁能指导我
尝试使用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'
它需要一些更改才能工作,但它可能对您有所帮助。
我通过加入 table t1 和 t2
创建 CTE 解决了这个问题
WITH CTE AS
(
SELECT col1, objtype
from tbl1
UNION
SELECT col1, objtype
from tbl2
)
SELECT
Name, Objtype, id, typeval,
(
SELECT Col1
FROM CTE C
WHERE C.ObjType = t.ObjType
) as Description
FROM Test t
感谢所有发表宝贵意见的人
Create table test
(
id int,
Name varchar(50),
ObjType varchar(50)
Typeval varchar(50)
)
我还有另外 2 个 table 分别命名为 tbl1 和 tbl2
根据 table "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)
谁能指导我
尝试使用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'
它需要一些更改才能工作,但它可能对您有所帮助。
我通过加入 table t1 和 t2
创建 CTE 解决了这个问题WITH CTE AS
(
SELECT col1, objtype
from tbl1
UNION
SELECT col1, objtype
from tbl2
)
SELECT
Name, Objtype, id, typeval,
(
SELECT Col1
FROM CTE C
WHERE C.ObjType = t.ObjType
) as Description
FROM Test t
感谢所有发表宝贵意见的人