如何根据 id 过滤条件对多行求和?

How to sum multiple rows based on the id filter criteria?

我有 table,record_idrecord_value。查询应该 return 所有 id 和值,但同时我需要 return 对特定组的 id 求和。这是我的数据示例:

record_id    record_value   
54               3
56               0
78               11
98               7
103              1
78               0
44               0
67               1
68               3
69               1

查询我有 returns 行的 ID 和值。我想在查询结果中也获得其中一些列。这是我尝试过的:

SELECT 
    record_id, 
    record_value 

    CASE 
        WHEN record_id IN ('54','56','67','68','69') THEN SUM(record_value) 
        ELSE ''
    END AS RowSum
FROM Records

RowSum 应该 return 19 但我收到错误:

SQL Error [257] [37000]: Implicit conversion from datatype 'VARCHAR' to 'NUMERIC' is not allowed.  Use the CONVERT function to run this query.

我使用 Sybase 数据库 DBeaver

  1. 您不能在一个查询中使用多个结果。您可以尝试使用 UNION ALL
  2. 如果您使用 CASE,那么两个 WHERE 子句应该具有相同的类型。您使用了 NUMERIC(用于 SUM)和 VARCHAR(用于空字符串 '')。你需要统一它们。

您可能使用的代码是:

SELECT 
    record_id, 
    record_value, 
FROM Records
union all
select null,
    CASE 
        WHEN record_id IN ('54','56','67','68','69') THEN convert(varchar, SUM(record_value)) 
        ELSE ''
    END AS RowSum