Sql 插入到时列名无效
我一辈子都搞不明白为什么在下面的代码中出现“无效列名'AvgDaily'”的错误。有什么想法吗Sql 插入到时列名无效,sql,sql-server,Sql,Sql Server,我一辈子都搞不明白为什么在下面的代码中出现“无效列名'AvgDaily'”的错误。有什么想法吗 create table #TMP_Daily_Avg_Rollup ( Zone varchar(20), fkiItem int, fkiLocation int, AvgDaily decimal(12,3) ) Insert into #TMP_Daily_Avg_Rollup (Zone, fkiItem, fkiLocation, AvgD
create table #TMP_Daily_Avg_Rollup
(
Zone varchar(20),
fkiItem int,
fkiLocation int,
AvgDaily decimal(12,3)
)
Insert into #TMP_Daily_Avg_Rollup (Zone, fkiItem, fkiLocation, AvgDaily)
Select
tte.Zone, tte.fkiItem, tte.fkiLocation,
(sum(tte.TransQty) / @UsageDaysLong) as AvgDaily
From
#TMP_Trans_Events tte
Group By
tte.Zone, tte.fkiItem, tte.fkiLocation
Order By
tte.fkiItem
胡猜
丢失外圆括号标记、SELECT中的列别名和表别名,因为我们只从一个表中进行选择
INSERT INTO #TMP_Daily_Avg_Rollup (Zone, fkiItem, fkiLocation, AvgDaily)
SELECT Zone, fkiItem, fkiLocation, sum(TransQty) / @UsageDaysLong
FROM #TMP_Trans_Events
GROUP BY Zone, fkiItem, fkiLocation
ORDER BY fkiItem
作为旁白
- 您真的需要ORDER BY将行插入临时表吗
- TransQty和UsageDaysLong的列数据类型是什么?如果希望表达式返回的值有三位小数,则需要确保其中一个值也有三位小数
DailyAvg
,脚本中没有DailyAvg
列。那么错误从何而来????限定的列名是最佳实践。这是非常糟糕的建议,与问题无关,因为在查询的SELECT
部分甚至没有选择AvgDaily
。当整个查询是INSERT时,SELECT中的限定列名不相关,由于INSERT和SELECT之间的列位置顺序是强制的。TransQty是一个十进制,UsageDaysLong是一个TINYINT当您单击错误消息时,光标将跳转到有问题的行。它跳转到哪一行,创建表还是插入?它跳转到插入行