select city, sum(case when cl.gender = 'man' then transaction_sum else 0 end) as sumOfMan,
sum(case when cl.gender = 'women' then transaction_sum else 0 end) as sumOfWomen
from card_transaction tr join client cl on tr.client_id=cl.client_id
where city in(
select city from card_transaction
where DATEPART(year,date) = 2019
group by city
having count(transaction_sum)>1000)
group by city
вообще странно написано особенно datepart...это дико медленно...
и лишний вложенный запрос.
select city, sum(case when cl.gender = 'man' then transaction_sum else 0 end) as sumOfMan,
sum(case when cl.gender = 'women' then transaction_sum else 0 end) as sumOfWomen
from card_transaction tr join client cl on tr.client_id=cl.client_id and date>'2018-12-31' and date<'2020-01-01'
group by city
having count(*)>1000
дешево и сердито