2017-06-20 16 views
0

タグ列のコンマ区切りの列を別々の行に分割すると、カンマで区切られ、以下のように別々の行に分割する必要があります。フォーラムで複数のリンクを見たことがありますが、SAP HANAではほとんどの機能の組み合わせが機能しません。どんな助けも高く評価されます。下の表のSAP HANA

MY_TABLE:

+-----+--------------+------------+-------------+ 
| id | parent_title | account_id | tags  | 
+-----+--------------+------------+-------------+ 
| 647 | title999  |   64 | 361,381,388 | 
| 646 | title998  |   64 | 361,376,388 | 
+-----+--------------+------------+-------------+ 

Required_Table

+-----+--------------+------------+------+ 
| id | parent_title | account_id | tags | 
+-----+--------------+------------+------+ 
| 647 | title999  |   64 | 361 | 
| 647 | title999  |   64 | 381 | 
| 647 | title999  |   64 | 388 | 
| 646 | title998  |   64 | 361 | 
| 646 | title998  |   64 | 376 | 
| 646 | title998  |   64 | 388 | 
+-----+--------------+------------+------+ 
+1

タグを個別の要素として扱う場合は、コンマ区切りのリストに保存しないでください。それは簡単です。これは最も基本的なリレーショナルデータベース設計です。 –

+0

はい@BillKarwinあなたは正しいですが、ここにデータは既に格納されており、正しい方法を見つけることができません。 –

+0

https://stackoverflow.com/questions/44110999/how-to-split-multipleの重複行から列への値/ 44113101#44113101。私の答えをチェックしてください。 –

答えて

0

これは動作し、2つの一時テーブルを作成する必要があります。 Bill Suggestedとして値を個別に保存することは常に良い考えです。文字列に3桁の昏睡があり、このコードがコンパイルされていると仮定します。これは、与えられたサンプルデータに作用します。

create table #temp 
(id int, parent_title varchar(100), account_id int, tags varchar(max)) 
insert into #temp 
values ('647','title999','64', '361,381,388'); 

insert into #temp 
values ('647','title999','64', '361,376,388'); 

create table #temp2 
(id int, parent_title varchar(100), account_id int, tags varchar(max)); 


insert #temp2 (id,parent_title,account_id,tags) 
select id, parent_title,account_id, LEFT(tags,3) tags from #temp; 

insert #temp2 (id,parent_title,account_id,tags) 
select id, parent_title,account_id, right (tags,3) tags from #temp ; 


insert #temp2 (id,parent_title,account_id,tags) 
select id, parent_title,account_id, left(substring(tags,5,6),3) tags from #temp ; 

select * from #temp2 

drop table #temp ; 
drop table #temp2 
+0

タグ数と数字に制限はありません –

0

SELECT id, parent_title, account_id, STRING_AGG(tags,',' ORDER BY tags) AS tags 
from your_Table 
group by id, parent_title, account_id 
order by 1 desc 

結果

をお試しください| id | parent_title | account_id |タグ|

| 647 |タイトル999 | 64 | 361,381,388 |

| 646 |タイトル998 | 64 | | 361,376,388 |

関連する問題