Reputation: 47
I have a SQL statement of the below format:
SELECT
p.env, p.name, i.sys_name, i.hostname,
CASE
WHEN (COUNT(DISTINCT p.env) OVER (PARTITION BY i.sys_name) +
COUNT(DISTINCT i.sys_name) OVER (PARTITION BY i.sys_name)) = 2
THEN 'no issues'
ELSE 'has issues'
END AS result
FROM
instances i
JOIN
properties p ON i.target_name = p.target_name
How can I add a where condition such that I can get only the rows with result as 'has issues'.
Thanks.
Upvotes: 0
Views: 68
Reputation: 1269763
One obvious solution is a subquery:
SELECT *
FROM (SELECT p.env, p.name, i.sys_name, i.hostname,
(CASE WHEN (COUNT(DISTINCT p.env) OVER (PARTITION BY i.sys_name) +
COUNT(DISTINCT i.sys_name) OVER (PARTITION BY i.sys_name)
) = 2
THEN 'no issues' ELSE 'has issues'
END) AS result
FROM instances i JOIN
properties p
ON i.target_name = p.target_name
) ip
WHERE result = 'has issues';
Upvotes: 2