QL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> 2 3 4 5 6 7 8 9 10 11 20120131 消費 1583 48627.56
20120131 消費撤銷 33 74.32
20120131 卡啟動記錄 614 0
出現SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> 2 3 4
隻需要在sql腳本開始的時候添加 sqlplus -s user/pass >>!
data
!
可解決
sqlplus 中執行結果
時間 交易類型 交易數 交易金額
-------- --------------- ---------- ----------
20120131 消費 1583 48627.56
sql指令如下
SQL> select t.inst_date as "時間",cast(d.dict_name as char(15)) as "交易類型", count(1) as "交易數", sum(t.amt_trans/100) as "交易金額"
2 from tbl_txn_his t , tb_ent_dict_info d
3 where t.inst_date >= 20120131
4 and t.inst_date <= 20120131
5 and t.txn_num in (1105, 3105, 7000, 7010)
6 and t.revsal_flag = '0'
7 and t.cancel_flag = '0'
8 and t.resp_code ='00'
9 and t.txn_num = d.dict_id
10 and d.dict_type = 999
11 group by d.dict_name , t.inst_date
12 ;
在不顯示列名,目前的辦法是這樣
select '時間 交易類型 交易數量 金額 ' from dual;
union all;
select t.inst_date as "時間",cast(d.dict_name as char(15)) as "交易類型", count(1) as "交易數", sum(t.amt_trans/100) as "交易金額"
from tbl_txn_his t , tb_ent_dict_info d
where t.inst_date >= 20120131
and t.inst_date <= 20120131
and t.txn_num in (1105, 3105, 7000, 7010)
and t.revsal_flag = '0'
and t.cancel_flag = '0'
and t.resp_code ='00'
and t.txn_num = d.dict_id
and d.dict_type = 999
group by d.dict_name , t.inst_date;
ps:附上Oracle SQL*PLUS指令應用 設定顯示列格式的相關指令
設定列格式的相關指令
1. 改變列的顯示長度
COLUMN column_name FOR[MAT] format
備注:
注意該指令将保持一直生效直至輸入了一個新的格式值或者退出了SQL*PLUS, 其中字段類型可以為Char, Varchar2, varchar。
如果SQL*PLUS的WARP變量的值被設定為"開"(預設值), 那麼字段的内容将會在format指令規定的長度處折行, 否則的話超過規定長度的後續字元将會被截取。
如果你有多個相同顯示屬性的列需要設定,那麼使用column 字段名 like 你想要複制顯示屬性的字段heading 字段名。注意如果不加上後面heading 字段名那麼複制的時候連字段名都會複制過去,顯然不适合一般要求。
2. 格式化NUMBER類型列的顯示
SQL> COLUMN SAL FORMAT $99,990
3. 顯示列值時,如果列值為NULL值,用text值代替NULL值
COMM NUL[L] text
SQL>COL COMM NUL[L] text
4. 設定一個列的回繞方式
COLUMN WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
備注:此指令常和format合用,當列值過長時可以使用該指令格式話輸出, wrapped根據字元長度控制, word_wrapped根據單詞控制, truncated則直接截取等長字元。
5. 清空目前所有列的設定,恢複成預設格式
CLEAR COLUMNS
下面我們來看一下這些指令的綜合應用:
SQL> desc testtable;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
NAME VARCHAR2(20)
REMARK VARCHAR2(50)
SALARY NUMBER
SQL> select * from testtable;
ID NAME
---------- ----------------------------------------
REMARK
--------------------------------------------------------------------------------
SALARY
----------
1 paul
99999
現在我們要對這個輸出進行修改,包括:
①分别設定輸出列的長度為2、10、6、8
②分别設定輸出列的列名居中
③格式化Salary列的值為$999,999
④将Remark列的空值替換為字元串User description
⑤設定Remark列的回繞方式為按單詞回繞
下面我們來看看這個SQL*PLUS指令應該如何寫:
SQL> column ID justify center
SQL> column Name justify center format a10
SQL> column Remark justify center format a6 NULL 'User description' word_wrapped
SQL> column salary justify right format $999,999
ID NAME REMARK SALARY
---------- ---------- ------ ---------
1 paul User $99,999
descri
ption
看看其中的SQL語句:
Column Remark justify center format a6 NULL 'User description' word_wrapped。
該句設定了:列名居中顯示、列的長度為6個字元、空值用'User description'代替、按單詞回繞(是以是在User處折行,而不是在User d出折行,雖然列的長度可以為6)
設定頁面及行格式的相關指令
1.設定一行可以容納的字元數
SQL> SET LIN[ESIZE] {80|n}
如果一行的輸出内容大于設定的一行可容納的字元數,則折行顯示。
2.設定一頁有多少行數
SQL> SET PAGES[IZE] {24|n}
如果設為0,則所有的輸出内容為一頁并且不顯示列标題
3.設定頁與頁之間的分隔
SQL> SET NEWP[AGE] {1|n|NONE}
當set newpage 0 時,會在每頁的開頭有一個小的黑方框。
當set newpage n 時,會在頁和頁之間隔着n個空行。
當set newpage none 時,會在頁和頁之間沒有任何間隔。
備注:以上三個指令經常合用, 首先設定每行顯示的最大長度, 再設定每頁有多少行, 最後設定頁間距. 如果要擷取較好格式的話可以配合Column format指令格式化每個字段的長度.
下面我們來實地檢視一下上述指令在結果輸出中的應用
ID NAME REMARK
---------- ---------- --------------------------------------------------
REG_DATE SALARY
---------- ----------
1 paul lin
07-6月 -08 5500
2 bob lin common user
06-6月 -08 6500
SQL>
下面我們要做的就是:
①調整頁面最大顯示長度為200
②設定每頁隻顯示一條記錄
③每頁之間間隔兩個空
SQL> set linesize 200 pagesize 1 newpage 2;
SQL> /
1 paul lin 07-6月 -08 5500
2 bob lin common user 06-6月 -08 6500
可以看到頁面的輸出并不讓人滿意(标題和虛線都沒有了),現在我們使用一種令人比較滿意的設定:
SQL> set linesize 200 pagesize 999 newpage;
ID NAME REMARK REG_DATE SALARY
---------- ---------- -------------------------------------------------- ---------- ----------
1 paul lin 07-6月 -08 5500
2 bob lin common user 06-6月 -08 6500
實際上該指令的最後設定newpage會在每頁的前面加上一個黑色的小方框(在這裡不能顯示),以提示這是新一頁的開始,假如你不想進行任何的提示那麼隻要設定newpage為none就可以了(你所看到的輸出和現在的一模一樣)。
至于linesize的設定則要考慮螢幕和列印機的大小了。
本文轉自 珏石頭 51CTO部落格,原文連結:http://blog.51cto.com/gavinshaw/771760,如需轉載請自行聯系原作者