Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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
SQLite Sum和CASE语句_Sql_Sqlite - Fatal编程技术网

SQLite Sum和CASE语句

SQLite Sum和CASE语句,sql,sqlite,Sql,Sqlite,我有一张桌子 ---------------------- | Col1 | Col2 | Col3 | ---------------------- | 1 |text1 | 1 | ---------------------- | 98 |text2 | 2 | ---------------------- | 2 |text3 | 1 | ---------------------- | 98 |text4 | 3 | -------------

我有一张桌子

----------------------
| Col1 | Col2 | Col3 |
----------------------
| 1    |text1 | 1    |
----------------------
|  98  |text2 | 2    |
----------------------
| 2    |text3 | 1    |
----------------------
| 98   |text4 | 3    |
----------------------
我需要获得
Col3的
Sum
,其中
Col1=98
Col3的
Sum
,其中
Col1 98
。期望的结果是5和2。 我的
SQL查询
如下所示:

'SELECT sum(case when Col1 = 98 then Col3 else 0 end) as aShort, ' +
  'sum(case when Col1 <> 98 then Col3 else 0 end) as aLong '...
“选择sum(当Col1=98时,则选择Col3,否则选择0结束)作为一个排序,”+
'求和(Col1 98和Col3其他0结束时的情况)为沿'。。。
我得到的结果是0和7。
我做错了什么?

我假设
Col1
的数据类型不是整数或数字,而是字符串类型,例如
text
varchar
,并且值中似乎包含一些空格。我强烈建议在数值类型的列中保留数值,但在当前情况下,您需要转换为整数,以便使用下面的查询获得所需的结果

SELECT SUM(CASE WHEN CAST(Col1 AS INT)  = 98 THEN Col3 ELSE 0 END) AS aShort, 
       SUM(CASE WHEN CAST(Col1 AS INT) <> 98 THEN Col3 ELSE 0 END) AS aLong
  FROM tab
选择SUM(CASE WHEN CAST(Col1为INT)=98,然后选择Col3,否则为0 END)作为short,
求和(CASE WHEN CAST(Col1为INT)98,然后Col3否则0结束)为
从选项卡

我假设
Col1
的数据类型不是整数或数字,而是字符串类型,例如
text
varchar
,并且值中似乎包含一些空格。我强烈建议在数值类型的列中保留数值,但在当前情况下,您需要转换为整数,以便使用下面的查询获得所需的结果

SELECT SUM(CASE WHEN CAST(Col1 AS INT)  = 98 THEN Col3 ELSE 0 END) AS aShort, 
       SUM(CASE WHEN CAST(Col1 AS INT) <> 98 THEN Col3 ELSE 0 END) AS aLong
  FROM tab
选择SUM(CASE WHEN CAST(Col1为INT)=98,然后选择Col3,否则为0 END)作为short,
求和(CASE WHEN CAST(Col1为INT)98,然后Col3否则0结束)为
从选项卡

您发布的代码是正确的:所以问题一定在别处。您发布的代码是正确的:所以问题一定在别处。空白的捕捉很好。在示例数据的第二行中,显然必须有一个前导空格。@BarbarosÖzhan感谢您的回答,但问题不在于空格或不正确的数据类型。保存在
Col1
中的外部代码已从98更改为99,我没有机会检查当前表。空白的捕捉很好。在示例数据的第二行中,显然必须有一个前导空格。@BarbarosÖzhan感谢您的回答,但问题不在于空格或不正确的数据类型。保存在
Col1
中的外部代码从98更改为99,我没有机会检查当前表。