How can I speed up a SELECT statement related with a VIEW in MySQL?
VIEWs are handly.  But they are not necessarily efficient.

In this case, you might be able to make it run 3 times as fast by not calling the VIEW 3 times.  Instead, since the SELECT in the VIEW is already doing the GROUP BY year, take advantage of it.

Essentially the view gives you 3 rows, but you want to turn it into 3 columns.  Before continuing with my answer, please confirm that.  That is, do SELECT * FROM invoice_lines and see if you get all the 'right' info, but laid out 'wrong'.

After that we can talk about "pivoting" the 3 rows into 3 columns.  You can get hints of doing that by searching this forum.

If you need to discuss further, provide SHOW CREATE TABLE invoice_lines,

Or, am I confused?  Do you have one table per year?  Bad.