I am trying to run this query to get the sales by month and by account:
x
select
left(cast(datekey as varchar(8)), 6) as themonth,
account, sum(sales)
from
Sales
where
datekey > 20150101
group by
themonth, account
order by
themonth asc
datekey
is an int
following the YYYYMMDD format for dates.
I’m getting this message:
Msg 207, Level 16, State 1, Line 3
Invalid column name ‘themonth’
Why would that column name be invalid?
I’m assuming the error message is meaningless so what else is wrong with this query?
Advertisement
Answer
SQL Server does not allow the alias to be reused in the GROUP BY
clause (other databases, such as MySQL, do allow for this). So, one option here would be to just repeat the quantity in the SELECT
clause:
SELECT
LEFT(CAST(datekey AS varchar(8)), 6) AS themonth,
account,
SUM(sales)
FROM Sales
WHERE datekey > 20150101
GROUP BY
LEFT(CAST(datekey AS varchar(8)), 6),
account
ORDER BY
themonth;
Note that it is possible to ORDER BY
the alias, so you may leave this part of your query as-is.