Предполагается, что вы ссылаетесь на строку, закомментированную в данный момент в коде, который вы разместили - псевдоним p
был использован в предложении from
- это означает, что вы можете использовать его в любом другом предложении в запросе, включаяподзапросы, имеющие предложение, и даже применяют предложения и предложения объединения.
Это неверно при использовании псевдонима в предложении select
- эти псевдонимы могут использоваться только в предложении order by
.
select
c.categoryname,
count(p.productid) as 'TotalProducts'
from Production.Products p
left join Production.Categories c
-- both `p` and `c` aliases are valid here since they where introduced in the `from` and `join` clauses
on p.categoryid = c.categoryid
-- the use of `c` here is valid since it was introduced in the `join` clause
group by c.categoryname
-- the use of `p` here is valid since `p` was introduced in the `from` clause.
having count(p.productid) > 10
-- This, however, will cause an error - invalid column name `TotalProducts`
-- having count(TotalProducts) > 10
-- This is valid since TotalProducts is an alias introduced in the `select` clause.
order by 'TotalProducts' desc;