Спасибо за проверку моего вопроса!
Я пытаюсь написать запрос для очень конкретной c проблемы, с которой мы сталкиваемся на моем рабочем месте, и я не могу понять, что у меня в голове вокруг него.
Короткая версия : мне нужно иметь возможность таргетировать столбцы по их имени, а точнее по части их имени, которая будет согласована на протяжении всего все столбцы, которые мне нужно объединить или сравнить.
Подробнее : у нас есть (например) 5 различных опросов. У них много вопросов каждый, но некоторые из них являются частью одного и того же показателя c, и нам нужно создать общее поле c, в котором оно хранится. Для этого есть более глубокая предыстория, но для нас это очень важно.
Мы смогли решить эту проблему с помощью операторов COALESCE () или CASE, но проблема в том, что количество опросов / версий опросов продолжает расти, наш поставщик неизбежно генерирует новые столбцы для каждого опроса и его вопросов.
Возьмем этот пример, который мы делаем в настоящее время и который работает достаточно хорошо:
CASE
WHEN SURVEY_NAME = 'Service1' THEN SERV1_REC
WHEN SURVEY_NAME = 'Notice1' THEN FNOL1_REC
WHEN SURVEY_NAME = 'Status1' THEN STAT1_REC
WHEN SURVEY_NAME = 'Sales1' THEN SALE1_REC
WHEN SURVEY_NAME = 'Transfer1' THEN Null
ELSE Null
END REC
А также эта альтернатива, которая работает хорошо:
COALESCE(SERV1_REC, FNOL1_REC, STAT1_REC, SALE1_REC) as REC
Но, как я уже упоминал, в конечном итоге у нас будет, например, "SALE2_RE C", и нам понадобятся ОБА в этом же утверждении. Я хочу создать что-то, где входить в SQL и вносить изменения не нужно. Учитывая, что столбцы ВСЕГДА будут называться " что-то # _RE C" для этой спецификации c metri c, есть ли способ достичь чего-то вроде:
COALESCE(all columns named LIKE '%_REC') as REC
Bonus! Связано, может быть другой способ обойти эту же проблему: также быть способом достичь этого?
SELECT (columns named LIKE '%_REC') FROM ...
Большое спасибо заранее за все ваше время и внимание.
-Kendall