Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 插入到时列名无效_Sql_Sql Server - Fatal编程技术网

Sql 插入到时列名无效

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

我一辈子都搞不明白为什么在下面的代码中出现“无效列名'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, 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的列数据类型是什么?如果希望表达式返回的值有三位小数,则需要确保其中一个值也有三位小数

确切的错误信息是什么?无法使用MS-SQL重现您的案例错误消息为Msg 207,级别16,状态1,第154行无效列名“DailyAvg”。DailyAvg!=阿夫达利。代码段中没有
DailyAvg
,脚本中没有
DailyAvg
列。那么错误从何而来????限定的列名是最佳实践。这是非常糟糕的建议,与问题无关,因为在查询的
SELECT
部分甚至没有选择
AvgDaily
。当整个查询是INSERT时,SELECT中的限定列名不相关,由于INSERT和SELECT之间的列位置顺序是强制的。TransQty是一个十进制,UsageDaysLong是一个TINYINT当您单击错误消息时,光标将跳转到有问题的行。它跳转到哪一行,创建表还是插入?它跳转到插入行