多行上的Mysql解析逻辑

时间:2018-10-26 11:46:09

标签: mysql sql pentaho

我具有以下引用的解析查询

link1-SET and Select Query combine Run in a Single MySql Query to pass result in pentaho 链接2

输入将显示在Col1下方,在上述参考链接的@input中,我仅考虑1条记录并为每个单元格应用解析逻辑,但是问题是多行(n行)并将结果与​​解析逻辑相结合。

Col1  
--------------
22:4,33:4
33:6,89:7,69:2,63:2
78:6
blank record
22:6,63:1

我想创建单个查询,使其与我要求的参考链接相同。

Expected Output 

 xyz   count
 ------------
 22    10
 33    10
 89    7
 69    2
 63    3
 78    6

我尝试了在这种情况下传递值的解决方案

  • 在我的查询中,条件通过1 col1传递1
  • MAX(col1)
  • group_concat

但是我没有得到期望的输出来在一个查询中满足所有这些要求。

1 个答案:

答案 0 :(得分:0)

我终于找到了解决我问题的方法。和group_concat为此工作

@input= (select group_concat(Col1) from (select Col1 from table limit 10)s);

group_concat将把Col1的所有行合并为逗号分隔的字符串

22:4,33:4,33:6,89:7,69:2,63:2,78:6,blank record,22:6,63:1  

因为我们现在有了单个字符串,所以我们可以应用链接1中所示的相同逻辑 我们可以用REPLACE命令替换空白记录,而忽略它。

使用link1结果中的逻辑后的输出

 xyz   count
 ------------
 22    4
 33    4
 33    6
 89    7
 69    2
 63    2
 78    6
 22    6
 63    1

只需使用分组依据

select xyz,sum(count) from (select link1 output)s group by xyz;  

将为您提供最终输出

 xyz   count
 ------------
 22    10
 33    10
 89    7
 69    2
 63    3
 78    6