public sealed override void VisitBefore(SubQueryExp expr)
 {
     if (!expr.IsUsedInResultColumn())
     {
         ++_queryExprNestLevel;
     }
     else
     {
         _subQueryStack.Push(SubQueryType.InResults);
     }
 }
 public sealed override void VisitAfter(SubQueryExp expr)
 {
     if (!expr.IsUsedInResultColumn())
     {
         --_queryExprNestLevel;
     }
     else
     {
         // SELECT句サブクエリの目印をつける
         _stack.Peek().IsSubQueryInResults = true;
         _subQueryStack.Pop();
     }
 }
 public override void VisitAfter(SubQueryExp expr)
 {
     if (expr.IsUsedInResultColumn())
     {
         // SELECT句サブクエリの場合
         if (this.IsNotInMainResultsSource())
         {
             return;
         }
         _scopeStack.Pop();
     }
     else
     {
         --_queryExprNestLevel;
     }
 }
 public override void VisitBefore(SubQueryExp expr)
 {
     if (expr.IsUsedInResultColumn())
     {
         // SELECT句サブクエリの場合
         if (this.IsNotInMainResultsSource())
         {
             return;
         }
         _scopeStack.Push(new Scope(FromOrResult.ResultQuery, false));
     }
     else
     {
         ++_queryExprNestLevel;
     }
 }