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,我没有机会检查当前表。