I’ve a table data
CREATE TABLE your_table
(
ER VARCHAR(512),
MONTH VARCHAR(512),
SCENARIO_CD VARCHAR(512)
);
INSERT INTO your_table (ER, MONTH, SCENARIO_CD) VALUES
('AAA', '1', 'BUDGET_N'),
('BBB', '1', 'BUDGET_N'),
('BBB', '1', 'BUDGET_N_1'),
('AAA', '1', 'ACT_N'),
('AAA', '3', 'BUDGET_N'),
('BBB', '3', 'BUDGET_N'),
('BBB', '4', 'BUDGET_N_1'),
('AAA', '4', 'ACT_N');
SELECT * FROM your_table
ER MONTH SCENARIO_CD
AAA 1 BUDGET_N
BBB 1 BUDGET_N
BBB 1 BUDGET_N_1
AAA 1 ACT_N
AAA 3 BUDGET_N
BBB 3 BUDGET_N
BBB 4 BUDGET_N_1
AAA 4 ACT_N
I’m trying to apply this logic: For the same Month and ER, I need to display only lines with budget_n and ACT_N, odenpendently from budget_N_1
I expect a result like
enter image description here
I tried the following scrit, but it returns wrong results
SELECT *
FROM your_table
WHERE ER+MONTH in
(
SELECT ER+MONTH as ERMONTH
FROM your_table
GROUP BY ER,MONTH
HAVING COUNT(CASE WHEN SCENARIO_CD = 'BUDGET_N' THEN 1 END) = 1
AND COUNT(CASE WHEN SCENARIO_CD = 'ACT_N' THEN 1 END) =1
)