【问题标题】:how to assign integer value to string and found the sum in SQL如何将整数值分配给字符串并在 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 这些值。
  • 我已经做到了兄弟。感谢您的帮助。

标签: sql sql-server ssms


【解决方案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() 将它们全部加起来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 2013-08-04
    相关资源
    最近更新 更多