Parameters in SQL are placeholders for data. If they contain SQL code, that code is ignored by the database and is treated as data.
This is why you can't send SQL chunks as parameter, and that's also the reason why you can't parameterize identifiers.
If you need a dynamic where clause, you need to use dynamic SQL, but that usually have a cost in both performance and security.
However, I suspect your current SQL is wrong in the first place, assuming FROM {PositionInCompany}
means you are concatenating the table name into the sql string (only assuming, since you didn't provide any information to show that).
If my assumption is correct, you need to stop doing that, read about SQL injection and how parameterized queries protects you from it, and understand that this form of concatenation is also vulnerable to SQL injection attacks.
In SQL, don't look for shortcuts. Write specific queries for specific tables. That's the only safe way to do it, and 99.9% of the time it has the best performance.