首页 > 解决方案 > 多行上的Mysql解析逻辑

问题描述

我使用以下参考解析查询

link1 - SET 和 Select Query 组合在单个 MySql 查询中运行以将结果传递到 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

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

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

标签: mysqlsqlpentaho

解决方案


我终于找到了我的问题的解决方案。和 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

推荐阅读