AFAIK this is a normal behaviour - the query can't know that the process which had started them didn't exists anymore until the query is finished and tried to transfer their data. This meant you would need to access the query-process directly within the database to be able to kill them. In general there are methods or specialized etl-tools to do such things but they are far away from trivial.
More practically could be to slice down the query into several smaller queries to avoid big queries and/or the use of incremental approaches to load only the current data. Here are various examples to these topic: Advanced topics for creating a qlik datamodel.