如何将整数值分配给字符串并在 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 中找到总和的主要内容,如果未能解决你的问题,请参考以下文章