ТАБЛИЦА 1
| КОД | ЦЕННОСТЬ |
|---|---|
| АА | 21 |
| АА | 32 |
| АБ | 24 |
| переменный ток | 22 |
| АА | 42 |
| переменный ток | 20 |
| ОБЪЯВЛЕНИЕ | 27 |
| ОБЪЯВЛЕНИЕ | 28 |
| АЭ | 29 |
| АФ | 31 |
| АГ | 45 |
| АЭ | 51 |
| АХ | 33 |
ТАБЛИЦА 2
| КОД | КЛЮЧ |
|---|---|
| АА | 1 |
| АБ | 2 |
| переменный ток | 3 |
| ОБЪЯВЛЕНИЕ | 4 |
| АЭ | 5 |
| АФ | 6 |
| АГ | 7 |
| АХ | 8 |
Здесь я хочу преобразовать таблицу таким образом, чтобы значение AB суммировалось с AA без воздействия на его ключ, аналогично значение AG должно суммироваться с AD без изменения его ключа, как показано ниже. Таблица 1 может иметь несколько значений для одного кода. Пожалуйста, помогите или скажите мне подход.
| КОД | ЦЕННОСТЬ | КЛЮЧ |
|---|---|---|
| АА | 119 | 1 |
| переменный ток | 22 | 3 |
| ОБЪЯВЛЕНИЕ | 100 | 4 |
| АЭ | 29 | 5 |
| АФ | 31 | 6 |
| АХ | 33 | 8 |


Используйте выражение CASE в TABLE1, чтобы объединить нужные коды, агрегировать и присоединиться к 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;
Смотрите демо.
ваш запрос помог мне в том, что мне пришлось сделать небольшое преобразование в соответствии с моим случаем, мне пришлось опубликовать его, поскольку я добавил несколько деталей, подумал, что это может дать мне новый подход, а предыдущий запрос не редактировался, он сказал мне опубликовать новый вопрос. Извинения
Не уверен, что понимаю, чего вы пытаетесь достичь. Я предполагаю, что под «объединением» вы подразумеваете «добавить», но я по-прежнему не понимаю, почему вы решили изменить AB с AA или AG с AE: какое правило связывает эти ключи? Я подозреваю, что «Ключ» как-то замешан; Вы можете определить его роль?