Sql server 在SQL Server中的两个表之间进行选择
问你一个问题-不确定它是否可行 我有一个场景,我想从一个表中选择一组数据,如果它存在,那么如果它不存在,我想从我知道它将存在的另一个表中选择它。问题是在某些情况下,它们的字段名略有不同。我很好奇,如果一个案例条款将是最好的方式做到这一点 i、 e: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) 从两个
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