Oracle sql добавление пользовательского имени столбца в качестве 1-й строки результирующего набора

#sql #oracle #oracle11g

#sql #Oracle #oracle11g

Вопрос:

Как мне получить имя столбца в качестве 1-й строки результирующего набора.Я пробовал ниже, но получаю ошибку, как показано ниже

 select 'First Name', 'Last Name', 'Middle Name', 'Term Number', 'BID', 'BTitle', 'SubB Name', 'LNum' from dual 
    UNION
    select
                pa.first_name as first_name,
                pa.last_name as last_name,
                pa.MIDDLE_INITIAL as middle_name,
                bi.bi_num as num,
                bi.b_id as bId,
                b.name as b_title,
                bi.sub_board_name as sub_b_name,         
                pa.L_NUMBER as lNum
            from
                M_INFO pa,
                B_INV bi,
                Blot b,
                users u,
                roles r  
            where
                bi.assigned_to  = u.bi_num( ) 
                and bi.bi_num = pa.bi_num( ) 
                and u.role_id = r.id( )  
                and bi.b_id = b.id
                and bi.delete_dt is null  
                and bi.delete_by is null  
                and bi.ARCHIVED_DT is null  
                and bi.b_id = '40'  and bi.sub_b_name = 'TEST'; 


ORA-01790: expression must have same datatype as corresponding expression
01790. 00000 -  "expression must have same datatype as corresponding expression"
*Cause:    
*Action:
Error at Line: 1 Column: 50
  

Комментарии:

1. Сообщение об ошибке сообщает вам. Значения данного столбца должны иметь согласованный тип данных, поэтому вы можете поместить строку (заголовок) «поверх» числового столбца. Это звучит как проблема X / Y.

2. Вы не можете этого сделать, потому что все ваши имена столбцов являются строками, а не все ваши столбцы данных являются строками. Почему вы все равно хотите это сделать? Просто присвоите своим столбцам нужные имена и забудьте об объединении.

3. @Isaac причина, по которой мне нужно, в том, что я хотел бы взять этот результирующий набор и экспортировать его в Excel с именем столбца.

4. Не ожидайте 'First Name', 'Last Name', , что etc будет отображаться в качестве первой строки.

Ответ №1:

Я бы рекомендовал внести два изменения в ваш запрос.

  1. Изменить UNION на UNION ALL . Таким образом, ваше объединение не будет искать дубликаты между двумя частями объединения.
  2. Поскольку первая часть вашего объединения — это все строки, вторая часть вашего объединения также должна возвращать все строки. Все столбцы во второй части вашего объединения, которые являются числами, должны быть преобразованы в строку. Пример: изменить bi.bi_num на TO_CHAR(bi.bi_num)

Комментарии:

1. Кроме того, я предполагаю, что OP хочет 'First Name', 'Last Name', ... использовать первую строку результирующего набора.