在SQL Server

时间:2017-06-21 17:49:24

标签: sql-server case

问题 - 不确定是否可行。

我有一个场景,我想从一个表中选择一组数据,如果它存在,那么如果不存在,我想从另一个表中选择它,我知道它将存在。问题是在某些情况下它们的字段名称略有不同。我很好奇CASE条款是否是最佳方法?

即:

SELECT example1, 
       example1a

FROM database 1 (if it exists) 

if not SELECT from database 2 (where it will exist)

3 个答案:

答案 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名)

但是当你选择查询表时必须存在。

希望你能帮忙