How to display post list in a table layout (multiple queries in single loop)

Your best bet is not to run a bunch of queries but to loop through your data once to organize it then a second time to display it. Below is the logic you need. The exact code will depend on your data set.

$events = array();
$posts = WP_Query( $args );
foreach ( $posts as $post ) { 
  $venue = $post->venue;
  $day_of_month = date( 'd', $post->date );
  $events[ $venue ][ $day_of_month ][] = $post;
}
for ( $x = 1; $x <= 31; $x ++ ) {
  foreach ( $events as $venue => $ev ) {
    if ( ! empty( $ev[ $x ] ) {
      echo '<td>';
      foreach ( $ev[ $x ] as $details ) {
        echo $details;
      }
      echo '</td>';
    }
  }
}