1. 程式人生 > >行列轉換:多條記錄按規定數量分組合並後顯示

行列轉換:多條記錄按規定數量分組合並後顯示

---建立測試資料:


14:41:12 [email protected]> create table tb                                    
14:41:37   2  as                                                 
14:41:38   3  select dbms_random.string('x', 4) random_string    
14:41:38   4  from dual                                          
14:41:38   5  connect by level <= 26;                            


Table created.


14:41:38
[email protected]
> select * from tb;

RANDOM_STRING
--------------
AXMU
6R5D
ASIE
A3Y0
VP82
VIVM
G8RC
ANB6
37V2
GQRG
6QM2
F2BX
4Z37
PG9Q
5E6H
FHKD
0EHR
UPG2
FV4A
K7JK
7VJZ
4LX9
M2KV
7BU6
44T9
RSZJ


                
-----要求查詢結果如下顯示,st的值五個分一組合併為一行顯示:
-----顯示結果如下:


ST
--------------------------------------------------
AXMU,6R5D,ASIE,VP82,A3Y0
VIVM,G8RC,ANB6,GQRG,37V2
6QM2,5E6H,PG9Q,F2BX,4Z37
FHKD,UPG2,K7JK,FV4A,0EHR
7VJZ,44T9,7BU6,M2KV,4LX9
RSZJ  
        
              
語句如下:

14:45:34
[email protected]
> select WMSYS.WM_CONCAT(random_string) st               
14:45:50   2  from (select rownum-1 sn ,random_string from tb)       
14:45:50   3  group by trunc(sn/5);                                  


ST
--------------------------------------------------
AXMU,6R5D,ASIE,VP82,A3Y0
VIVM,G8RC,ANB6,GQRG,37V2
6QM2,5E6H,PG9Q,F2BX,4Z37
FHKD,UPG2,K7JK,FV4A,0EHR
7VJZ,44T9,7BU6,M2KV,4LX9
RSZJ


6 rows selected.  

如果分隔符不希望使用逗號',',可以使用replace函式置換成其他字元,例如:

14:52:25 [email protected]> select replace(WMSYS.WM_CONCAT(random_string),',','|') st               

14:52:36   2  from (select rownum-1 sn ,random_string from tb)       
14:52:36   3  group by trunc(sn/5); 

ST
--------------------------------------------------
AXMU|6R5D|ASIE|VP82|A3Y0
VIVM |G8RC|ANB6|GQRG|37V2
6QM2|5E6H|PG9Q|F2BX|4Z37
FHKD|UPG2|K7JK|FV4A|0EHR
7VJZ |44T9|7BU6|M2KV|4LX9
RSZJ

相關推薦

行列轉換記錄規定數量組合顯示

---建立測試資料: 14:41:12 [email protected]> create table tb                                     14:41:37   2  as                    

著shift鍵對dbgrid進行記錄選擇的問題(50)

可以用sendmessage,想dbgrid 發鍵盤資訊,按下shift鍵,同時按下button1procedure TForm1.Button1Click(Sender: TObject);vari:integer;beginfor i:=1 to Table1.Recordcount-1 dosendme

SQL 拼接個字段的值&一個字段記錄的拼接

cells body score 完成 整數 數據類型 pad 參數 需要 如student表: studentID studentName studentScore 01 Alice 90

sql語句update 記錄

key mysq ech tle date class spl imp set UPDATE categories SET display_order = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END

oracle Insert 一次插入記錄

pan rac ora 方法 tab where ble code 兩種方法 oracle Insert 一次插入多條記錄有兩種方法: 1)Insert All Into table_name values ... insert all into table_name v

mysql 根據某個字段將記錄的某個字段拼接成一個字段

ESS 令行 ike ice 多條 value 新增 shel 情況 1 問題 GROUP_CONCAT函數用於將多個字符串連接成一個字符串,在拼接成字符串時就會存在拼接長度的問題,mysql 默認的拼接最大長度為1024 個字節,由於1024個字節會出現不夠用的情況,所以

mysql 批量更新與批量更新記錄的不同值實現方法

批量更新 mysql更新語句很簡單,更新一條資料的某個欄位,一般這樣寫: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';   如果更新同一欄位為同一個值,mysql也很簡單,修改

執行一sql語句update記錄實現思路

如果你想更新多行資料,並且每行記錄的各欄位值都是各不一樣,你會怎麼辦呢?本文以一個示例向大家講解下如何實現如標題所示的情況,有此需求的朋友可以瞭解下       通常情況下,我們會使用以下SQL語句來更新欄位值: 複製程式碼 程式碼如下: UP

Groovy程式碼優化-記錄合成

最近有一個需求,分享活動領取詳情的顯示,由於領取記錄中狀態為‘支出’的記錄都是由領取狀態為‘已入賬’轉化過來的,所以需要將這種狀態的記錄虛化成兩條記錄,一條是‘已入賬’的狀態,另一條則是‘支出’的狀態,另外,對於同一天的狀態為‘支出’的資料進行整合,捏造成一條資料,然後再按照時間排序,而

Laravel一次更新記錄,批量更新的方法

在我們實際應用中,免不了這樣的情況——例如我們同時錄入多條資訊,可能三條五條還好說,但量一旦變大,就會增加讀寫資料庫的次數,會降低效率,那麼,我們該如何實現,做到一次讀寫資料庫,批量更新呢? 例如這種情況: HTML程式碼: <!doctype html> &l

將包含分號的欄位值拆分成記錄

將包含分號的欄位值拆分成多條記錄   xx,yy,zz三個欄位中的內容如果分號分隔的個數相同(以xx欄位為基準),則按先後順序拆分記錄,如果分號分隔的個數與xx欄位不同的,則按xx欄位的分隔的個數拆分記錄,與其個數不等的原樣不變 drop table #aagocr

sql,欄位內容用逗號分割的字串轉換資料

WITH testtb2 AS ( SELECT A.[TypeClass_ID], A.[temp], CHARINDEX(',', A.[temp]) AS STA, CHARINDEX(','

laravel批量更新記錄

建立資料模型 <?php namespace App\Models; use DB; use Illuminate\Database\Eloquent\Model; /** * demo表模型 */ class Demo extends Model {

SQL 記錄取最前面一或根據條件任取N

--按某一欄位分組取最大(小)值所在行的資料 /* 資料如下: name val memo a    2   a2(a的第二個值) a    1   a1--a的第一個值 a    3   a3:a的第三個值 b    1   b1--b的第一個值 b    3   b3:b

mybatis 實現批量更新 更新記錄個欄位為不同的值

更新多條記錄為多個欄位為不同的值 比較普通的寫法,是通過迴圈,依次執行update語句。 Mybatis寫法如下: <update id="updateBatch" parameterType="java.util.List"> <foreach coll

mybatis 返回 map 一記錄

一  返回一條記錄的map 1. mapper.xml 中 resultType="map"  <select id="getEmpByIdReturnMap" resultType="map">          select * from employee

使用JDBC一次插入記錄(以MySQL為例)

閱讀本文需要的先修知識: 最基本的SQL語句 最基本的JDBC操作(如插入單條記錄) 如急需使用請直接看最後一段程式碼。 在JDBC中,插入記錄最簡單的方法是使用executeUpdate()方法,但該方法中的引數只能是單條SQL語句,其實對於需要INSERT或者UPDA

Mysql根據指定指定字元拆分某個欄位,分割成記錄(去重複)

1.如圖 2.sql SELECT DISTINCT substring_index( substring_index( a.device_id, ',', b.help_topic_id + 1 ), ',',- 1 ) NAME FROM tb_tabrec

mysql left join 記錄 1:n 的處理方法

一、準備兩張表,文章表和評倫表 CREATE TABLE `article` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `title` varchar(255) DEFAULT '' COMMENT '文章標

oracle 一次sql插入記錄

假如我有一個學生資訊表,建立的表結構如下: create table student( id int primary key not null, name varchar(10) not null) 熟悉MySQL資料庫的可能知道,如果你想要批量插入一些資料,一條INSER