Если учесть, что запрос, насколько я понял, не первый, и до этого запросы к A и B работали без вопросов, то постарайтесь заново строку переписать возможно что то напортачено. Либо проверьте соответствие b.ID к INTEGER.
Это единственное что может у меня придти на ум.
Андрей, Да и a и b это integer, если поменять их местами то так же будет ругаться но на другое поле, я делал запрос в самом SQL server [a].[ID = [b].[ID] и все работает, а yii2 почему-то превращает в [a].[ID] = 'b.ID'
Ну так напиши ->Where(['a.ID = b.ID']); и не заморачивайся...
PS. Вообще создаётся впечатление, что в формате массива уй однозначно считает, что ему предоставляют данные в форме [column => value], т.е. правое выражение считается литералом и даже не рассматривается как поле.
Пожалуйста, укажите мне, что именно прочитано неверно. Я пока этого не вижу. Это будет полезно - не только и даже не столько мне, сколько тем, кто использует Yii.
В своём ответе Вы пишете, что это баг. Дайте, пожалуйста, соотв. ссылку на багтрак.