2017-10-27 16 views
1

Google에 대한 모든 정보를 봤습니다. 이걸 보려고 새로운 눈이 필요해.PL/SQL : 센터 쿼리 결과

나는 결과의 중심에 놓으려고 노력하고있다. 여기에 ... 내가 지금까지 무엇을이 출력을 생성

set lines 2000 pages 2000 
    COLUMN total HEADING "Total" FORMAT A20 JUSTIFY CENTER 
    COLUMN sending_fi HEADING "Sending M" FORMAT A20 JUSTIFY CENTER 
    COLUMN receiving_fi HEADING "Receiving M" FORMAT A20 JUSTIFY CENTER 
    COLUMN status HEADING "Payment Status" FORMAT A20 JUSTIFY CENTER 
    SET UNDERLINE = 
    select 
     count(*) as "Total", 
     p.sending_fi, 
     p.receiving_fi, 
     p.status 
    from 
     my_schema.my_table p 
    where 
     p.match_date 
      between 
       to_date 
        (
         '2017/10/26:00:00:00', 
         'yyyy/mm/dd:hh24:mi:ss' 
        ) 
      and 
       to_date 
        (
         '2017/10/28:23:59:59', 
         'yyyy/mm/dd:hh24:mi:ss' 
        ) 
    and 
     p.expedited='1' 
    and 
     p.status='DELIVERED' 
    group by 
     p.sending_fi, 
     p.receiving_fi, 
     p.status 
    order by 
     1 
     DESC 
    ; 

...

Total Sending M Receiving M Payment Status
==================== ==================== ==================== ================= 266759 BAC BAC DELIVERED
49954 JPM BAC DELIVERED
45194 BAC JPM DELIVERED
25990 WFC BAC DELIVERED
25676 JPM WFC DELIVERED
24120 WFC JPM DELIVERED
23565 BAC WFC DELIVERED

열 머리글 (이름)을 중심으로하는,하지만 내 인생에 대한, I 결과를 집중시키는 방법을 알 수 없습니다.

저는 매우 제한된 SQL 기술을 사용하여 권한이없는 사용자입니다 (내가 수행 한 모든 것은 업데이트와 삽입을 선택합니다). 귀하의 제안에 친절하게하십시오.

+1

이 SQL과는 아무 상관이 없습니다. SQL은 단순히 데이터를 가져옵니다. 열 데이터를 왼쪽, 오른쪽 또는 가운데 맞춤 여부는 데이터를 선택하는 데 사용하는 도구의 문제입니다. 글꼴 스타일 및 색상과 동일합니다. Toad, SQL Developer 또는 sql plus와 같은 개발자 도구로 작업하는 동안 그러한 생각을주지 않아야합니다. 일단 사용자를위한 프로그램을 작성하면 데이터가 예쁘게 보이기를 원합니다. 따라서 PHP/HTML 또는 C#을 사용하든 상관없이 그리드/테이블에 데이터 정렬을 지시하십시오. –

+1

나는 이것이 결코 사용하지 않는 sqlplus 보고서라고 가정합니다. 'COLUMN sending_fi FORMAT A20 JUSTIFY CENTER'를 사용해 보셨습니까? 태그를 수정하여 더 나은 도움을 얻을 수 있습니다. –

+0

@ThorstenKettner -'justify'는 헤더 만 제어합니다 (OP는 이미 스크립트에서 해당 헤더를 가지고 있으므로 헤더가 이미 가운데에 놓여 있습니다!) – mathguy

답변

1

원래 내가 코멘트로 이것을 썼다. 그렇다면 질문을 중복으로 생각하는 생각을했습니다. 하지만 내가 찾은 유일한 복제본은 아무런 대답이 없습니다. 똑같은 것을 말하는 단지 설명입니다. (I는 너무 후 내 의견이었다 알아야한다!)

Column Formatting JUSTIFY not working

답변 : 당신은 SQL * 플러스에서 답변을 원하는처럼

것 같습니다. 답변이 없습니다입니다. 문자열과 날짜는 항상 열의 왼쪽에 정렬되고 오른쪽에 숫자가 정렬됩니다. 기간. 당신은 그것을 바꿀 수 없다. (문자열 자체에 추가하는 것 이외에, 공백으로 채우고, 시간 낭비!) "좋은 모습"의 보고서를 생성해야하고 SQL * Plus는 충분하지 않습니다.보고 도구를 사용해야합니다. SQL * Plus에서는 수행 할 수 없습니다.

SQL 명령 COLUMN ... FORMAT ... JUSTIFY에 약간의 혼란이있는 것 같습니다. 여기에 설명서의 내용이 있습니다 :

JUS [TIFY] {L [EFT] | C [ENTER] | R [IGHT]}

정렬 표제입니다. JUSTIFY 절을 사용하지 않으면 NUMBER C 럼에 대한 표제는 디폴트로 RIGHT가되고 다른 C 럼 유형에 대한 표제는 디폴트로 LEFT가됩니다.

https://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12013.htm#BACHCABF

1

LPAD를 사용할 수 있습니다. 여기

짧은 예이다

COLUMN blks HEADING "Num Blocks" FORMAT A10 JUSTIFY CENTER 

select 
lpad(to_char(blocks),(10-length(to_char(blocks)))/2+length(to_char(blocks)),' ') blks 
from user_segments 
where rownum < 11; 

아이디어에 열 패드되는 형식의 크기와 공간의 열 값의 크기 사이의 차이의 절반과 좌측.

출력

:

Num Blocks 
---------- 
    16 
    16 
    16 
    16 
    16 
    16 
    16 
    16 
    16 
    16 

10 rows selected. 

바비

0

바비의 대답은 텍스트 출력을 위해 작동합니다. sqlplus의 HTML 마크 업 기능을 사용하여 형식화 된 html 출력을 생성 할 수도 있습니다.https://docs.oracle.com/database/121/SQPUG/ch_seven.htm#SQPUG531을 확장 한 예는

create table t1 (
id number 
, dt date 
, vc varchar2(20) 
, constraint pk_t1 primary key (id)); 

begin  
for i in 1..10 loop 
insert into t1 values (i,sysdate + i , 'Row '||i); 
end loop; 
commit; 
end; 
/

SET MARKUP HTML ON PREFORMAT OFF ENTMAP ON - 
HEAD "<TITLE>Department Report</TITLE> - 
<STYLE type='text/css'> - 
<!-- BODY {background: #FFFFC6} --> - 
<!-- TD { text-align: center} --> - 
</STYLE>" - 
BODY "TEXT='#FF00Ff'" - 
TABLE "WIDTH='90%' BORDER='5'" 

그런 다음 귀하의 요청에 의해

spool t.html 

을 따라 실행하는 것 다음

host firefox t.html