Mysql在多行上解析逻辑

问题描述 投票:0回答:1

我用以下引用解析查询

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

输入将显示在下面的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 by 1 col1 in(我的查询)
  • MAX(col1)
  • GROUP_CONCAT

但我没有得到预期的输出,以适应单个查询中的所有内容。

mysql sql pentaho
1个回答
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

只需使用Group by

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
© www.soinside.com 2019 - 2024. All rights reserved.