2017-03-07 66 views
0

早上好 我有一个类似下面的表格,我必须根据“DT1-Increased_Reason”列条目重复该表。根据列重复mysql中的行数

Region Market Cluster   Report_Name  DT1-Increased_Reason 
abc  CT  NECTC11123  NECTC11   TMO_Waiting For Report/Recommendations  Approval;#ERIC_Delay between Start to Submit. Refer to DT1-Increased CT Reason (Start to Submit);# 
def  LA  GCR_OPT_WELA     TMO_Waiting For Report/Recommendations Approval;# 
abc  NJ  NENJC086567  Westchester_02 ERIC_Drive Test Taking too Long;#ERIC_Lack Of GSC Resources/Queuing DT Drives;#ERIC_Cluster Having Too Many RF Issues Needing Tuning;# 

您可以观察到“DT1-Increased_Reason”列中的条目有多个使用“#;”

我需要的数据是

Region Market Cluster   Report Name  DT1-Increased_CT_Reason_Start_to_Accept 
abc  CT  NECTC11123  NECTC11   TMO_Waiting For Report/Recommendations Approval 
abc  CT  NECTC11123  NECTC11   ERIC_Delay between Start to Submit. Refer to DT1-Increased CT Reason (Start to Submit) 
def  LA  GCR_OPT_WELA  TMO_Waiting For Report/Recommendations Approval;# 
abc  NJ  NENJC086567  Westchester_02 ERIC_Drive Test Taking too Long 
abc  NJ  NENJC086567  Westchester_02 ERIC_Lack Of GSC Resources/Queuing DT Drives 
abc  NJ  NENJC086567  Westchester_02 ERIC_Cluster Having Too Many RF Issues Needing Tuning;# 

回答

0

如果您知道的最大数量,你可以这样做的:

select t.Region, t.Market, t.Cluster, t.ReportName, 
     substring_index(DT1_Increased_CT_Reason_Start_to_Accept, ';#', 1) 
from t 
union all 
select t.Region, t.Market, t.Cluster, t.ReportName,  
     substring_index(substring_index(DT1_Increased_CT_Reason_Start_to_Accept, ';#', 2), ';#', -1) 
from t 
where DT1_Increased_CT_Reason_Start_to_Accept like '%;#_%' 
union all 
select t.Region, t.Market, t.Cluster, t.ReportName,  
     substring_index(substring_index(DT1_Increased_CT_Reason_Start_to_Accept, ';#', 3), ';#', -1) 
from t 
where DT1_Increased_CT_Reason_Start_to_Accept like '%;#%;#_%'; 

你会添加其他子查询每增加的原因。

+0

嗨戈登,它不工作...我试图,它给出了相同的结果,如选择*从表中,不除;# – user2503377

+0

@ user2503377。 。 。分隔符不完全正确。 –