问题 - 不确定是否可行。
我有一个场景,我想从一个表中选择一组数据,如果它存在,那么如果不存在,我想从另一个表中选择它,我知道它将存在。问题是在某些情况下它们的字段名称略有不同。我很好奇CASE条款是否是最佳方法?
即:
SELECT example1,
example1a
FROM database 1 (if it exists)
if not SELECT from database 2 (where it will exist)
答案 0 :(得分:1)
ISNULL()
来自两个表中的OUTER JOIN
可能是最好的方式。
答案 1 :(得分:1)
如果这是逐列的,您最有可能使用它。
SELECT
coalesce(db1.example1,db2.example1),
coalesce(db1.example1a, db2.example1a)
FROM
database1 db1
FULL OUTER JOIN
database2 db2 on
db1.id = db2.id
如果您想选择其中一个,可以使用exists()
if exists(select 1 from VW_ARUN_NORM_NEW WHERE REQ_CAT LIKE '%1000%' R REQ_CAT LIKE '%2000%')
begin
SELECT TOP
MATERIAL_NUMBER,
SALES_ORDER_NUMBER,
REQ_CAT,
PLANT,
REQUESTED_DELIV_DATE
FROM VW_ARUN_NORM_NEW
WHERE
REQ_CAT LIKE '%1000%'
OR REQ_CAT LIKE '%2000%'
end
else
begin
SELECT
MATERIAL,
SALES_ORDER_NUMBER,
REQUIREMENT_CATEGORY,
PLANT_CODE,
REQUESTED_DELIVERY_DATE
FROM
VW_MRP_ALLOCATION
WHERE
REQUIREMENT_CATEGORY LIKE '%5000%'
end
答案 2 :(得分:0)
你可以使用if exists子句例子
IF EXISTS(从database1中选择example1) 开始
- 做点什么
端 其他 开始 - 另一个查询 端
或者您可以检查表格是否存在:
(从sys.tables中选择名称='ACTIVSOC2'的前1名)
但是当你选择查询表时必须存在。
希望你能帮忙