Динамическая конкатенация столбцов, если столбцы не равны NULL в одном запросе - для большого количества столбцов - PullRequest
0 голосов
/ 04 мая 2018

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

            CREATE TABLE Table1
            ([C1] varchar(50), [C2] varchar(50), [C3] varchar(50),[C4] varchar(50),[C5] varchar(50) )
            ;

            INSERT INTO Table1
            ([C1], [C2], [C3], [C4], [C5])
            VALUES
            ('F92', 'title',null,null,'B350'),
            ('F92', 'title',null,null,'B150'),
            ('F92', 'title',null,null,'PB100')
            ;


            SELECT
              CASE WHEN c3 IS NULL THEN null ELSE c3+c5 END
             FROM table1


            drop table table1

это дает желаемый результат нуля. У меня более 50 строк и более 30 файлов (с именами переменных столбцов), поэтому написание запроса на выборку для каждого столбца займет слишком много времени, и количество столбцов также может измениться!

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

            SELECT
              CASE WHEN c1 IS NULL THEN null ELSE 'c1'+c1 END,
              CASE WHEN c2 IS NULL THEN null ELSE 'c2'+c2 END,
             CASE WHEN c3 IS NULL THEN null ELSE 'c3'+c3 END,
             CASE WHEN c4 IS NULL THEN null ELSE 'c4'+c4 END,
             CASE WHEN c5 IS NULL THEN null ELSE 'c5'+c5 END
             FROM table1

1 Ответ

0 голосов
/ 04 мая 2018

ZLK ... это все равно потребует, чтобы я вручную выбрал все столбцы .. У меня есть файлы с более чем 50 столбцами, не говоря уже о более чем 30 файлах ... есть ли способ сделать это динамически?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...