Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server中的两个表之间进行选择_Sql Server_Case - Fatal编程技术网

Sql server 在SQL Server中的两个表之间进行选择

Sql server 在SQL Server中的两个表之间进行选择,sql-server,case,Sql Server,Case,问你一个问题-不确定它是否可行 我有一个场景,我想从一个表中选择一组数据,如果它存在,那么如果它不存在,我想从我知道它将存在的另一个表中选择它。问题是在某些情况下,它们的字段名略有不同。我很好奇,如果一个案例条款将是最好的方式做到这一点 i、 e: SELECT example1, example1a FROM database 1 (if it exists) if not SELECT from database 2 (where it will exist) 从两个

问你一个问题-不确定它是否可行

我有一个场景,我想从一个表中选择一组数据,如果它存在,那么如果它不存在,我想从我知道它将存在的另一个表中选择它。问题是在某些情况下,它们的字段名略有不同。我很好奇,如果一个案例条款将是最好的方式做到这一点

i、 e:

SELECT example1, 
       example1a

FROM database 1 (if it exists) 

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

从两个表的外部联接获取ISNULL可能是最好的方法。

您可以使用if exists子句示例

如果存在,请从数据库1中选择示例1 开始

-做点什么

结束 其他的 开始 -做另一个查询 结束

或者,您可以检查该表是否存在:

从sys.tables中选择前1名,其中name='ACTIVSOC2'

但当您选择查询表时,该表必须存在


希望您能提供帮助

如果这是一列一列的基础,您最有可能使用它

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


DB/表存在的位置或表中实际有数据的位置?表中实际有请求的数据的位置,因此如果选择不在db1中,则逐个列查看db2is this column by column或整个dataset?column by column。我在下面提出了一个想法——除了它只返回约700行,猜测是因为它不是一个UNION ALL?它要么是一个参数,要么不是。很抱歉,很难理解。我认为这是正确的,我看到的唯一问题是,第二个表具有相同的值,但字段名称略有不同…即表1中的物料编号与表2中的物料编号针对哪个部分?coalesce版本或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