如何将整数值分配给字符串并在 SQL 中找到总和

Posted

技术标签:

【中文标题】如何将整数值分配给字符串并在 SQL 中找到总和【英文标题】:how to assign integer value to string and found the sum in SQL 【发布时间】:2021-06-17 07:52:56 【问题描述】:

您好,我有一张如下图所示的表格

    clientId       lev1   lev2        lev3      lev4     lev5
      1            low    very-low    high      low      very-high

我想为低 =2 ,非常低 =1 ,高 =4 ,非常高 =5 映射 INT 值。 那么我需要找到每个 clientId 的总和。

这里我需要得到 (2+1+4+2+5) = 14 我该怎么做?

【问题讨论】:

您的意思是 map,而不是分配。使用映射创建一个单独的表并加入它 是的,我想映射。对不起。 qus 已更正。 使用CASE 表达式和SUM 这些值。 我已经做到了兄弟。感谢您的帮助。 【参考方案1】:

我建议使用apply。事实上,你根本不需要case 表达式:

select t.*, v.total
from t cross apply
     (select sum(v2.val) as total
      from (values (t.lev1), (t.lev2), (t.lev3), (t.lev4), (t.lev5)
           ) v(lev) join
           (values ('low', 2), ('very-low', 1), ('high', 4), ('very-high', 5)
           ) v2(lev, val)
           on v.lev = v2.lev
     ) v;

基本上这样做是将级别从五列取消旋转到五行(在子查询中)。然后它将这些与您指定的值相匹配。最后,sum() 将它们全部加起来。

【讨论】:

以上是关于如何将整数值分配给字符串并在 SQL 中找到总和的主要内容,如果未能解决你的问题,请参考以下文章

将整数值分配给输出行,pentaho

为啥可以将整数值分配给未初始化的指针

SQL如何将整数值四舍五入到小数点后2位

计算分配给 SQL 列中字符串标记的数值的总值

如何将字符串列分配给变量并在 Bash 脚本的输出中引用它

sql 将整数值转换为日期