A good metadata layer can generate appropriate filter controls, so it is the case that a system can be architected so that filtering by anything provides little programming overhead. The system that i work on is like this. Whenever you see a grid, you can filter by any column, with appropriate controls for that column's datatype. Whether it is desirable to do such a thing depends on the nature of the product and its users, but my point is that the dev overhead can indeed be minimal.