我在同一张表中有两列我想要比较。问题在于它们不必相同而被视为“相同”。下面我将尝试用一个例子来解释。
示例:
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
基本上,如果“SUBNET_ENVIRONMENT”是Prod,环境也应该是“生产”。如果“SUBNET_ENVIRONMENT”是非产品,则环境应该是除“生产”之外的任何东西。
在这个例子中,前两个将(host1和host2)被认为是正确的,因此被排除在结果之外。以下4(主机{3-6})是“不同的”,因此这些是我想要在查询结果中显示的那些。
下面是我如何获得整个结果集的示例查询。如何修改此项以仅显示差异?
SELECT
HOST_NAME,
REPLACE(HOST_ENVIRONMENT,',','/') HOST_ENV,
HOST_SUBNET_ENV
FROM
HOST_TABLE
答案 0 :(得分:1)
应该像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')