【问题标题】:Summing a Column with Multiple Data Types in SQL在 SQL 中对具有多种数据类型的列求和
【发布时间】:2018-07-08 01:56:23
【问题描述】:

我对 SQL 还很陌生,正在尝试在 sql server 中编写一个查询来获取每周的文档总和。我的查询如下所示:

SELECT 
    [table].[week],
    SUM(ISNULL([table].[documents],0))
FROM 
    [table]
JOIN 
    (VALUES (15,187293),...other pairs...,(127,120918)) AS Outside ([ID],[Organization]) ON Outside.[ID]=[table].[ID]
                                 AND Outside.[Organization] = [table].[Organization]
GROUP BY 
    week

这个相同的查询在不同的表(格式完全相同)上每周输出文档,但是当我在这个表上运行它时,我得到了错误

消息 245,第 16 级,状态 1,第 2 行
将 varchar 值“#N/A”转换为数据类型 int 时转换失败。

文档列中没有任何类似于 #N/A 的内容。我怎样才能适当地计算出这笔款项?

【问题讨论】:

  • 它告诉您您的表中有 '#N/A' 值,并且转换为 int 失败。这并不奇怪,该值不是数字。
  • 猜测,IDOrganisation 是数据类型 varchar。如果要存储数值,则应使用数值数据类型,而不是 varcharvarchar 不是一刀切的数据类型。

标签: sql sql-server


【解决方案1】:

要查找有问题的行,请运行查询:

select t.*
from table t
where id = '#N/A' or organization = '#N/A';

或者更好:

select t.*
from table t
where try_convert(int, id) is null or try_convert(int, organization) is null;

您可以通过在outside 值集中使用适当的类型来解决此问题。也就是说,一个或两个值应该用单引号括起来,因此它们是字符串而不是数字。

【讨论】:

    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多