Где пункт о группе столбцов - PullRequest
2 голосов
/ 10 марта 2019

У меня есть данные, которые поступают из розничного магазина, и столбцы ниже

col_1   qty_1   col_2    qty_2    col_3     qty_3
Green   5       Red        8      Yellow     10

Если я хочу узнать количество Green, то я могу написать простой запрос, где col_1 = 'Green'.

Но я не получаю код цвета Green только в col_1.Он продолжает перетасовываться между col_1, col_2 и col_3, как показано ниже

col_1   qty_1   col_2    qty_2    col_3     qty_3
Green   5       Red        8      Yellow     10
Yellow  10      Green      7      Red        20

Как мне получить один запрос для извлечения доступного количества Грина без изменения запроса каждый раз?

Ответы [ 2 ]

5 голосов
/ 10 марта 2019
select case when col_1 = 'Green' then qty_1
            when col_2 = 'Green' then qty_2
            when col_3 = 'Green' then qty_3
       end as qty
from your_table
where 'Green' in (col_1, col_2, col_3)
0 голосов
/ 12 марта 2019

Чтобы исправить проблему со значениями NULL, вы можете использовать условие COALESCE (), если оно равно NULL, тогда оно будет пустым:

SELECT case when COALESCE(col_1,'') = 'Green' then qty_1
            when COALESCE(col_2,'') = 'Green' then qty_2
            when COALESCE(col_3,'') = 'Green' then qty_3
            end as qty
FROM your_table
WHERE 'Green' IN ( COALESCE(col_1,''), COALESCE(col_2,''), COALESCE(col_3,'') )
;
...