Как выбрать несколько строк с условием единственного значения - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть таблица Salary (ID, Имя, Code_Value, Значение)

ID       | Name| Code_Value | Value
---------+-----+------------+---------
D4ABD930 | A   |      XP    | 400287
6FE02B7A | B   |      AP    | 1002
ABC12343 | C   |      PC    | 10007

Я хочу, чтобы значение столбца "Имя" было 'A', будет иметь три строки.Каждая строка представляет собой другое значение.

Я пытаюсь выбрать, чтобы получить этот результат:

Name | Code_Value | Value
-----+------------+------------
 A   |   XP1      | 400287 *60 
 A   |   XP2      |   1002 *30
 A   |   XP3      |  10007 *15 
 C   |   PC       |  10007
 B   |   AP       |   1002

Этот код выдает ошибку.Я пишу в дескриптор результат:

select  
    Name, 
    (case 
        when Code_Value ='XP' then 'XP1'
        when Code_Value ='XP' then 'XP2'
        else 'XP3' 
     end),
    value 
from  
    Salary

Помогите мне решить эту проблему.Спасибо.

1 Ответ

2 голосов
/ 24 сентября 2019

Вы можете использовать join и производную таблицу для этого:

select s.name, coalesce(v.code_value, s.code_value) as code_value,
       s.value * coalesce(v.factor, 1)
from salary s left join
     (values ('XP', 'XP1', 60),
             ('XP', 'XP2', 30),
             ('XP', 'XP3', 15)
     ) v(old_code_value, code_value, factor)
     on v.old_code_value = s.code_value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...