代码之家  ›  专栏  ›  技术社区  ›  Varun Rao

SQL将员工姓名和薪水一个接一个地列出

  •  1
  • Varun Rao  · 技术社区  · 7 年前

    一个简单的select语句 EMPLOYEES 表得到这个结果。

    select FIRST_NAME, SALARY from employees;
    
    FIRST_NAME     SALARY
    ------------ --------
    Steven          24000
    Neena           17000
    Lex             17000
    

    但我需要这种形式的输出。

    COLUMN_TEXT
    ------------
    Steven
    24000
    Neena
    17000
    Lex
    17000
    

    员工 FIRST_NAME 需要排在第一排,后面跟着他/她 SALARY

    我试过下面的方法。但是有没有更好的方法呢?

    select COLUMN_TEXT from (
    select FIRST_NAME as COLUMN_TEXT
           , Row_Number() Over (Order By employee_ID) rn from employees
    union all
    select to_char(SALARY) as COLUMN_TEXT
          , Row_Number() Over (Order By employee_ID) rn from employees
    order by rn
    );
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Ponder Stibbons    7 年前

    我会像你那样做。你也可以用 unpivot :

    select column_text 
      from (select employee_id, first_name, to_char(salary) salary from employees) 
      unpivot (column_text for type in (first_name, salary))
      order by employee_id, type
    

    SQLFiddle demo

    取消打印 需要Oracle 11g或更高版本。

        2
  •  2
  •   Zaynul Abadin Tuhin    7 年前
    1. CHR(10)=>左前,换行

    像下面这样试试

    select FIRST_NAME || chr(10) SALARY  from employees