Sql 比较表中的列,仅显示差异
我试图比较同一个表中的两列。问题在于,它们不必完全相同,就可以被视为“相同”。下面我将试着用一个例子来解释 例如:Sql 比较表中的列,仅显示差异,sql,database,oracle,Sql,Database,Oracle,我试图比较同一个表中的两列。问题在于,它们不必完全相同,就可以被视为“相同”。下面我将试着用一个例子来解释 例如: HOST_NAME ENVIRONMENT SUBNET_ENVIRONMENT host1 Production Prod host2 Development(Dev)/Testing Non-Prod host3 Development(Dev)
HOST_NAME ENVIRONMENT SUBNET_ENVIRONMENT
host1 Production Prod
host2 Development(Dev)/Testing Non-Prod
host3 Development(Dev) Prod
host4 Production Non-Prod
host5 Testing/UAT Prod
host6 DR Prod
本质上,如果“子网_环境”是Prod,那么该环境也应该是“生产”环境。如果“子网_环境”是非生产环境,则该环境应该是“生产环境”之外的任何环境
在本例中,前两个(host1和host2)将被认为是正确的,因此将被排除在结果之外。下面的4个(主机{3-6})是“不同的”,所以这些是我希望在查询结果中显示的
下面是如何获取整个结果集的示例查询。我如何修改它以仅显示差异
SELECT
HOST_NAME,
REPLACE(HOST_ENVIRONMENT,',','/') HOST_ENV,
HOST_SUBNET_ENV
FROM
HOST_TABLE
应该像OR一样简单:
SELECT
HOST_NAME,
REPLACE(HOST_ENVIRONMENT,',','/') HOST_ENV,
HOST_SUBNET_ENV
FROM
HOST_TABLE
WHERE (SUBNET_ENVIRONMENT = 'Prod' AND ENVIRONMENT <> 'Production')
OR (SUBNET_ENVIRONMENT = 'Non-Prod' AND ENVIRONMENT = 'Production')
选择
主持人姓名,
替换(主机环境“,”,“/”)主机环境,
主机\子网\环境
从…起
主机表
其中(子网_环境='Prod'和环境'Production')
或(子网_环境='Non-Prod'和环境='Production')