Как выбрать столбцы, которые не являются нулевыми в SAP HANA? - PullRequest
0 голосов
/ 08 октября 2018

Итак, у меня есть базовая таблица - TRAINING, которая имеет 100 столбцов.Некоторые из столбцов будут полностью пустыми, а некоторые будут содержать значения.Так, скажем, COLUMN 1-20 являются нулевыми, а COLUMN 21-100 не равны NULL.

У меня есть еще одна таблица с именем - CONFIGURATION.Он имеет только один столбец типа VARCHAR.Эта таблица содержит имена тех столбцов из таблицы TRAINING, которые не являются NULL.Поэтому он будет содержать значения - COLUMN 21-100.

Что я хочу сделать - это извлечь данные только из тех столбцов, которые не равны NULL.Поэтому я хочу вывод в виде точек данных, содержащихся в таблице COLUMN 21-100.Это число может каждый раз отличаться, и оно также может чередоваться, скажем, COLUMN 1-10 равно NULL и COLUMN 11-25 не NULL, а оставшееся снова NULL.

Я думаю о реализации внутреннего соединения, но я делаюне иметь структуры таблицы, необходимой для этого.

Пожалуйста, укажите некоторую подсказку.

Спасибо.

1 Ответ

0 голосов
/ 08 октября 2018

Для этого нужно создать динамический SQL.

Первый шаг - создать ALL_COLUMNS переменную типа VARCHAR(5000).Из вашей таблицы CONFIGURATION выберите имена столбцов, которые вы хотите запросить.Затем используйте функцию STRING_AGG, чтобы объединить их в одно значение (в моем примере COL1 - это столбец из таблицы CONFIGURATION).Присвойте вывод переменной ALL_COLUMNS

Второй шаг Используйте EXECUTE IMMEDIATE для запуска динамического SQL.Добавьте переменную ALL_COLUMNS в качестве входных данных для этого запроса.

Вот примерный код:

DO
BEGIN

/* First Step - create string with all column names separated by comma*/

    DECLARE ALL_COLUMNS VARCHAR(5000);

    SELECT  STRING_AGG(COL1,',' ORDER BY COL1)  INTO ALL_COLUMNS FROM CONFIGURATION;

/*Second Step - create dynamic SQL including variable from First Step*/

    EXECUTE IMMEDIATE ('SELECT ' || :ALL_COLUMNS  || ' FROM "TRAINING" ');

END
...