SQL 合并列中的行值

SQL merge row values in a column

TABLE 1

CODE VALUE
AA 21
AA 32
AB 24
AC 22
AA 42
AC 20
AD 27
AD 28
AE 29
AF 31
AG 45
AE 51
AH 33

TABLE 2

CODE KEY
AA 1
AB 2
AC 3
AD 4
AE 5
AF 6
AG 7
AH 8

这里我想以这样一种方式转换 table,即 AB 值与 AA 相加而不影响其密钥,类似地,AG 的值必须与 AD 相加而不更改其密钥,如下所示。 Table 1 一个代码可以有多个值。请帮忙或告诉我方法。

CODE VALUE KEY
AA 119 1
AC 22 3
AD 100 4
AE 29 5
AF 31 6
AH 33 8

TABLE1中使用CASE表达式合并您想要的代码并聚合并加入TABLE2:

SELECT t1.code, t1.value, t2.key
FROM (
  SELECT CASE code 
           WHEN 'AB' THEN 'AA' 
           WHEN 'AG' THEN 'AD' 
           ELSE code 
         END code, 
         SUM(value) "value"
  FROM table1
  GROUP BY 1
) t1 INNER JOIN table2 t2
ON t2.code = t1.code
ORDER BY t1.code;

参见demo