2015-12-23 70 views
0

我是SQL新手。我沒有寫操作,這樣我創建了一個臨時表#temp,也做了以下內容:使用新創建的列

select 
    *, round(var1/100,0) as year 
from #temp 

select 
    id_bucket, year, sum(b_flag) as num_b 
from 
    #temp 
group by 
    id_bucket, year 
order by 
    id_bucket, year 

然後,上面寫着

無效的列名「年」出現錯誤。

這是爲什麼,我該怎麼辦?

+5

'year'是保留字(用於'日期部分()'和'DATENAME()'功能,例如)。將您的列命名爲未保留的內容。該列表位於:https://msdn.microsoft.com/en-us/library/ms189822.aspx。另外,您從表中選擇*年份列,但不會更改表格。它只將該列放入結果集中。 –

+8

您創建的列未在表格中創建。你應該使用[子查詢](https://technet.microsoft.com/en-us/library/ms189575%28v=sql.105%29.aspx)。 – Marshal

+2

包含創建臨時表的SQL代碼可能會有所幫助。 –

回答

1

想必您想查詢的是:

select id_bucket, round(var1/100,0), sum(b_flag) as num_b 
from #temp 
group by id_bucket, round(var1/100, 0) 
order by id_bucket, round(var1/100, 0);