不同行的每一列都有一条记录 SQL 报告
Posted
技术标签:
【中文标题】不同行的每一列都有一条记录 SQL 报告【英文标题】:Every column on different line with one record SQL reports 【发布时间】:2017-02-19 14:03:49 【问题描述】:我正在尝试为特定的表 emp 生成类似这样的报告。
************************************************************
EMPLOYEE NUMBER : 1010
EMPLOYEE NAME : SARAH
JOB : DESIGNER
SALARY : 10000$
*************************************************************
EMPLOYEE NUMBER : 1011
EMPLOYEE NAME : HANNAH
JOB : DECORATOR
SALARY : 20000$
*************************************************************
但我不知道如何将每个列名放在不同的行上。
sql > break column on empname skip page
上面的代码做了这样的事情。
EMPNO ENAME JOB SAL
---------- ---------- --------- ----------
7839 KING PRESIDENT 5000
EMPNO ENAME JOB SAL
---------- ---------- --------- ----------
7840 QUEEN PRESIDENT 4000
请建议它的代码是什么? TIA。
【问题讨论】:
【参考方案1】:如果您只想在某些表示层(例如文本编辑器)中使用这种格式的数据,您可以简单地选择连接在一起的列,用换行符分隔:
DECLARE
CURSOR cur IS
SELECT empno, ename, job, sal FROM yourTable;
v_empno yourTable.empno%INT;
v_ename yourTable.ename%VARCHAR2(100);
v_job yourTable.job%VARCHAR2(100);
v_sal yourTable.sal%NUMBER(10,4);
BEGIN
OPEN cur;
LOOP
FETCH cur INTO v_empno, v_ename, v_job, v_sal
EXIT WHEN cur%NOTFOUND;
dbms_output.put_line('EMPLOYEE NUMBER : ' || v_empno || CHR(13) || 'EMPLOYEE NAME : '
|| v_ename || CHR(13) || 'JOB : ' || v_job || CHR(13) || 'SALARY : ' ||
v_sal || '$' || CHR(13));
END LOOP;
CLOSE cur;
END;
【讨论】:
但是使用上面的 sql 语句,它并没有提供我想要的输出。它在一行中显示所有列和一条记录,然后递归地显示所有列。 @TrueDroider 您可以尝试复制该输出并粘贴到编辑器中,比如 Notepad++ 吗?如果它有效,它应该在那里显示正确的格式。如果没有,那么我们需要找到一种方法来获取 select 语句中的换行符。 SALARY : 800$ER : 7369 EMPLOYEE NAME : SMITH 查询显示类似这样的内容,即使在记事本++中也是如此 @TrueDroider 我最后一次尝试:使用光标和dbms_output.put_line()
。如果这不起作用,您应该考虑将数据转储到文本编辑器中并从那里开始。以上是关于不同行的每一列都有一条记录 SQL 报告的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Access 2016 中的另一列上选择具有最大值的不同行