别名在当前行的过滤条件或连接条件中是不能使用的。因为先过滤才会有结果,即 where 或 on 在 select 之前执行。而order by里可以使用,因为在order by之前别名列已被取出了。

解决方案 »

  1.   

    Access 导出SQL 源码SELECT RecievedAll.[Recipient-Address], IIf(IsNull(RecievedInternal![Number-Recieved-Mail]),0,RecievedInternal![Number-Recieved-Mail]) AS InRecd, IIf(IsNull(RecievedInternal![Total-Size-MB]),0,RecievedInternal![Total-Size-MB]) AS InRecdSize, IIf(IsNull(SentInternal![Number-Sent-Mail]),0,SentInternal![Number-Sent-Mail]) AS InSent, IIf(IsNull(SentInternal![Total-Size-MB]),0,SentInternal![Total-Size-MB]) AS InSentSize, IIf(IsNull(RecievedExternal![Number-Recieved-Mail]),0,RecievedExternal![Number-Recieved-Mail]) AS ExRecd, IIf(IsNull(RecievedExternal![Total-Size-MB]),0,RecievedExternal![Total-Size-MB]) AS ExRecdSize, IIf(IsNull(SentExternal![Number-Sent-Mail]),0,SentExternal![Number-Sent-Mail]) AS ExSent, IIf(IsNull(SentExternal![Total-Size-MB]),0,SentExternal![Total-Size-MB]) AS ExSentSize, [InRecd]+[InSent]+[ExRecd]+[ExSent] AS TotalNum, [InRecdSize]+[InSentSize]+[ExRecdSize]+[ExSentSize] AS [Total-Size]
    FROM (((RecievedAll LEFT JOIN RecievedInternal ON RecievedAll.[Recipient-Address]=RecievedInternal.[Recipient-Address]) LEFT JOIN SentInternal ON RecievedAll.[Recipient-Address]=SentInternal.[Sender-Address]) LEFT JOIN RecievedExternal ON RecievedAll.[Recipient-Address]=RecievedExternal.[Recipient-Address]) LEFT JOIN SentExternal ON RecievedAll.[Recipient-Address]=SentExternal.[Sender-Address];
      

  2.   

    on 条件时不要用别名,用原表的字段名?怎么理解?ON后面没有别名啊?麻烦帮忙改一下,可以么?