Sorting matrixblocks by earliest date from child table
This is a bit tricky to do from the template, but what I would suggest is to query for the Matrix blocks once,
than loop through the blocks and store the data to a new custom array.

The idea is, to build that array in a way that ensures, you can later apply sort and group Twig filters.

{% set allDates = [] %}
{% for block in entry.myEventsMatrix %}
    {% for row in block.myDatesTable %}

        {% set allDates = allDates|merge([{
            datetime: (row.myDateTime|date('c')),
            eventId: (block.id),
            event: block
        }]) %}

    {% endfor %}
{% endfor %}


When sorting an array of arrays with the sort filter, the inner array's first value is relevant, so make sure this is the
DateTime you want to sort by. Besides that, I included the block's ID "eventID" and the complete block model "event".

{% set datesGrouped = allDates|sort|group('eventId') %}

{% for eventId, datesInEvent in datesGrouped %}
    &lt;h3&gt;{{ eventId }}&lt;/h3&gt;        
    {% for date in datesInEvent %}
        {{ date.datetime|date('Y-m-d') }}
    {% endfor %}
{% endfor %}


Outside the "datesInEvent" loop you can access the events model with:

{% set event = datesInEvent[0].event %}