Oracle sql 添加自定义列名作为结果集的第一行

Oracle sql adding custom column name as 1st row of the resultSet

如何将列名作为结果的第一行 set.I 在下面尝试过但得到如下所示的错误

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. UNION 更改为 UNION ALL。这样你的联合就不会在联合的两个部分之间寻找重复项。
  2. 由于联合的第一部分都是字符串,因此联合的第二部分也需要 return 所有字符串。并集第二部分中的任何数字列都需要转换为字符串。示例:将 bi.bi_num 更改为 TO_CHAR(bi.bi_num)