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')