2017-06-21 53 views
-2

問題給你 - 不確定是否可行。在SQL Server中的兩個表之間進行選擇

我有一個場景,我想從一個表中選擇一組數據,如果它存在那麼如果它不是我想從另一個表中選擇它,我知道它將存在。問題是在某些情況下他們的字段名稱略有不同。我很好奇,如果CASE條款是最好的方式來做到這一點?

即:

SELECT example1, 
     example1a 

FROM database 1 (if it exists) 

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

在DB /表存在或實際上存在表中的數據? – scsimon

+0

其中實際上存在表中請求的數據,因此如果選擇不在db1中,那麼在db2 – user3496218

+0

中查看的是此列逐列還是整個數據集? – scsimon

回答

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 
+0

我認爲這是正確的道路,我看到的唯一問題是,第二個表具有相同的值,但與/略有不同的字段名稱... – user3496218

+0

即表1中的MATERIAL_NUMBER與表2中的材料 – user3496218

+0

哪一部分?合併版本還是存在版本? – scsimon

1

ISNULL()來自這兩個表的OUTER JOIN可能是最好的辦法。

0

是否存在子句例如

IF存在,你可以使用(從數據庫1選擇例1) 開始

--do東西

末 其他 開始 --do另一個查詢 結束

或者您可以檢查表格是否存在:

(選擇其中名稱=「ACTIVSOC2」 SYS.TABLES前1名)

但是當你選擇存在查詢必須的表。

希望大家幫

相關問題