TSQL将数据类型varchar转换为float时出错。警告:通过聚合或其他集合操作消除空值

TSQL将数据类型varchar转换为float时出错。警告:通过聚合或其他集合操作消除空值,sql,tsql,ssms,Sql,Tsql,Ssms,我得到了上面的错误,它在第95行插入了: “插入@total” 我添加了列topic\u name varchar(100)、samplegroup\u name varchar(50)、subtopic varchar(50) 从一个工作查询,这导致了错误。这些列都不是浮点数,以上类型是正确的。如果我注释掉这些列,那么查询运行良好,因此我不确定从这里该做什么 尝试插入到@total中的值的顺序有问题 查看@total的定义: DECLARE @total TABLE ( item_id

我得到了上面的错误,它在第95行插入了: “插入@total” 我添加了列topic\u name varchar(100)、samplegroup\u name varchar(50)、subtopic varchar(50)
从一个工作查询,这导致了错误。这些列都不是浮点数,以上类型是正确的。如果我注释掉这些列,那么查询运行良好,因此我不确定从这里该做什么

尝试插入到
@total
中的值的顺序有问题

查看
@total
的定义:

DECLARE @total TABLE (
   item_id varchar (30),
   item_dbkey int,
   status varchar (7),
   nT float,
   nY float ,
   sigmaX float,
   sigmaSqX float,
   sigmaY float,
   topic_name varchar(100),
   samplegroup_name varchar (50),
   subtopic varchar(50)
)
现在注意插入:

INSERT INTO @total
SELECT 
   Item_id,
   CTR.item_dbkey, 
   TIP.Status,
   tpta.topic_name, -- this tries to go into nT
   ttisg.samplegroup_name, -- this tries to go into nY
   TIP.subtopic, -- this tries to go into sigmaX
   COUNT(CTR.item_dbkey),                                                -- Number of exams which had this item_dbkey
   COUNT(CASE WHEN iop.weightage >= 1 THEN CTR.item_dbkey END) C,       -- How many times was this answered correctly
   SUM  (CTAP.raw_score ) AS totalscore,                                -- Sum of all scores (scaled or raw)
   SUM  (SQUARE( CTAP.raw_score ) ) AS totalscore2,                    -- Sum of the Square of all scores (scaled or raw)
   SUM  (CASE WHEN iop.weightage >= 1 THEN ( CTAP.raw_score ) END ) AS totalscorecorr -- When answered correctly, sum the scores (scaled or raw)

例如,
topic\u name
不能插入到
nT
列中

这不是一个错误,当您聚合的行的值超过包含空值时,您会收到以下警告:看一看:它没有尝试将varchar转换为float?或者你只是指错误的第二部分?这不是错误,只是警告。您应该能够执行查询。事实上,“将varchar转换为float时出错”是一个实际错误。这是意料之中的事!这是实际的答案,谢谢你,先生。在写了几百行代码之后,这总是很明显的。这是一种常见的“模式”,通常简单的错误是介绍它们的程序员无法发现的,第二双眼睛可以帮上忙。