Логика синтаксического анализа Mysql на нескольких строках - PullRequest
0 голосов
/ 26 октября 2018

У меня есть парсинг запросов со ссылками ниже

link1 - Комбинация SET и Select Query Run в одном запросе MySql для передачи результата в 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 на 1 col1 in (мой запрос)
  • MAX (col1)
  • group_concat

но я не получаю ожидаемого вывода, чтобы уместить все это в одном запросе.

1 Ответ

0 голосов
/ 29 октября 2018

Я наконец нашел решение для моего вопроса. и 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
...