Как создать столбец SQL, значения которого зависят (сопоставляются) со значениями существующего поискового столбца? - PullRequest
0 голосов
/ 12 октября 2019

Упрощенная версия того, что я спрашиваю: скажем, у меня уже есть колонка для цветов пиджака для пешеходов, и она очень специфична и включает в себя такие значения, как (канарейка, золото, одуванчик, желтый, лимонад, голубой, голубой, детский, церулеанский, и т.д.). Я хочу создать 2 новых столбца: «Цветовая группа» и «Светло-темный», чтобы можно было пометить все куртки желтого цвета в разделе «Цветовая группа желтый» и классифицировать их как светлые цвета.

Обратите внимание, что я работаю с продуктом базы данных, и все данные хранятся в базе данных. Я не могу создать новые данные в реальной базе данных. Но в модуле отчетности я могу создавать столбцы на основе существующих столбцов. Эти данные будут существовать только в отчете, а не в базе данных. Кроме того, в способе его настройки мне не нужна команда SELECT, которая просто выполняется по умолчанию, но не стесняйтесь указывать ее в своем ответе, это не смущает меня. Я пробовал:

если customer_jacket_color = "одуванчик", то "Желтый"

Также пробовал с WHEN вместо "if"

, когда customer_jacket_color_group = 'Yellow' затем'light'

Мои ожидаемые результаты будут состоять из 1 столбца цветов и дадут мне 3 столбца, которые описывают цвета на основе того, как я сопоставляю исходные значения с новыми столбцами. Одуванчик, Желтый, Светло-синий, Синий, Темно-мятный, Зеленый, Светлый ...

1 Ответ

0 голосов
/ 12 октября 2019

Я думаю, вы хотите выражение case:

select t.*,
       (case when customer_jacket_color = 'dandelion' then 'Yellow'
             when customer_jacket_color = 'sky blue' then 'Blue'
             . . .
        end) as color_group,
       (case when customer_jacket_color = 'dandelion' then 'light'
             when customer_jacket_color = 'sky blue' then 'dark'
             . . .
        end) as light_dark
from t;
...