SQLite Sum和CASE语句

ddhy6vgd  于 2023-06-23  发布在  SQLite
关注(0)|答案(1)|浏览(136)

我有一张table

----------------------
| Col1 | Col2 | Col3 |
----------------------
| 1    |text1 | 1    |
----------------------
|  98  |text2 | 2    |
----------------------
| 2    |text3 | 1    |
----------------------
| 98   |text4 | 3    |
----------------------

我需要得到一个SumCol3其中Col1 = 98SumCol3其中Col1 <> 98。期望的结果将是5和2。

-------------------------------
| aShort (=98) | aLong (<>98) |
-------------------------------
|     5        |      2       |
-------------------------------

我的SQL query看起来是这样的:

'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 '...

结果是0和7。我做错了什么?

bfhwhh0e

bfhwhh0e1#

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

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

Demo

相关问题