我正在使用HR Schema,我想将所有列连接到','每一行。
我的代码是:
SELECT employee_id || ',' || first_name || ',' || last_name || ',' || email || ',' || phone_number || ','|| job_id || ',' || manager_id || ',' || hire_date || ','
|| salary || ',' || commission_pct || ',' || department_id
THE_OUTPUT FROM employees;
有没有更好的方法(例如使用listagg函数)? 我想如果表格有1000列我不能做上面的
非常感谢
答案 0 :(得分:1)
我想将所有列连接到','每一行
然后使用 SQL * Plus 命令生成所需的输出。这完全是关于格式化输出。
例如,
SQL> SET colsep ,
SQL> SET pagesize 20
SQL> SET trimspool ON
SQL> SET linesize 200
SQL> SELECT * FROM hr.employees WHERE ROWNUM <=10;
EMPLOYEE_ID,FIRST_NAME ,LAST_NAME ,EMAIL ,PHONE_NUMBER ,HIRE_DATE,JOB_ID , SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID
-----------,--------------------,-------------------------,-------------------------,--------------------,---------,----------,----------,--------------,----------,-------------
100,Steven ,King ,SKING ,515.123.4567 ,17-JUN-03,AD_PRES , 24000, , , 90
101,Neena ,Kochhar ,NKOCHHAR ,515.123.4568 ,21-SEP-05,AD_VP , 17000, , 100, 90
102,Lex ,De Haan ,LDEHAAN ,515.123.4569 ,13-JAN-01,AD_VP , 17000, , 100, 90
103,Alexander ,Hunold ,AHUNOLD ,590.423.4567 ,03-JAN-06,IT_PROG , 9000, , 102, 60
104,Bruce ,Ernst ,BERNST ,590.423.4568 ,21-MAY-07,IT_PROG , 6000, , 103, 60
105,David ,Austin ,DAUSTIN ,590.423.4569 ,25-JUN-05,IT_PROG , 4800, , 103, 60
106,Valli ,Pataballa ,VPATABAL ,590.423.4560 ,05-FEB-06,IT_PROG , 4800, , 103, 60
107,Diana ,Lorentz ,DLORENTZ ,590.423.5567 ,07-FEB-07,IT_PROG , 4200, , 103, 60
108,Nancy ,Greenberg ,NGREENBE ,515.124.4569 ,17-AUG-02,FI_MGR , 12008, , 101, 100
109,Daniel ,Faviet ,DFAVIET ,515.124.4169 ,16-AUG-02,FI_ACCOUNT, 9000, , 108, 100
10 rows selected.
SQL>
或者,您可以在 SQL Developer 中使用新的 /*csv*/
提示。
/*csv*/
例如,在我的 SQL Developer版本3.2.20.10 :
中
SQL Developer 4.1版中的新增功能,使用以下内容就像sqlplus命令一样运行并作为脚本运行。不需要查询中的提示。
SET SQLFORMAT csv