TSQL将数据类型varchar转换为float时出错。警告:通过聚合或其他集合操作消除空值
我得到了上面的错误,它在第95行插入了: “插入@total” 我添加了列topic\u name varchar(100)、samplegroup\u name varchar(50)、subtopic varchar(50)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
从一个工作查询,这导致了错误。这些列都不是浮点数,以上类型是正确的。如果我注释掉这些列,那么查询运行良好,因此我不确定从这里该做什么 尝试插入到
@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时出错”是一个实际错误。这是意料之中的事!这是实际的答案,谢谢你,先生。在写了几百行代码之后,这总是很明显的。这是一种常见的“模式”,通常简单的错误是介绍它们的程序员无法发现的,第二双眼睛可以帮上忙。