Yeah I'm not sure it's just a retool problem. Every javascript component library has a table component, but none of them allow you to use a data attribute as a dynamic column, and a data attribute for the rows. Effectively it's a table with dynamic values on both the x and y axes:

And I'm not sure there are any standard components out there which provide this feature. There are a number of 'dynamic pivot table' hacks on the forum which go some way there.
Anyway - I had an idea - given the that time periods are by definition static, I just did a prototype of an approach which is definitely going to solve some of my use case problems - interested to know if it solves your issue: