Я пишу инструмент PHP, из моего запроса я получаю вывод ниже
| dst | count(*) |
| 0280302002 | 31 |
| 0280304115 | 83 |
| 0280304121 | 80 |
| 0280304124 | 10 |
| 0280304136 | 1 |
| 2002 | 3 |
| 4115 | 12 |
| 4121 | 10 |
| 4124 | 2 |
Что мне нужно, это только 10 цифр вывода.
Пример: - 31 (значение 0280302002 + 3 (значение 2002) = выход должен быть 0280302002 = 34
Есть ли способ получить это значение?
мой запрос
select dst,count(*) from cdr where calldate between '2019-01-01 00:00:00' and '2019-01-31 23:59:59' and dst in ('4121', '2006','2011''4124','0280304121', '0280302006','0280302011','0280304124') and length(src)>4 group by dst order by dst;
Вы можете попробовать использовать case when
expression и concat()
select case when length(dst)=4 then concat('028030',dst) else dst end as dst,count(*)
from cdr
where calldate between '2019-01-01 00:00:00' and '2019-01-31 23:59:59' and
dst in ('4121', '2006','2011''4124','0280304121', '0280302006','0280302011','0280304124') and length(src)>4
group by case when length(dst)=4 then concat('028030',dst) else dst end
order by dst
Вы можете рассматривать dst
как строку и принимать четыре крайних справа символа:
SEECT RIGHT(dst, 4), COUNT(*)
FROM cdr
WHERE calldate BETWEEN '2019-01-01 00:00:00' AND '2019-01-31 23:59:59' AND
dst IN ('4121', '2006','2011''4124','0280304121', '0280302006', '0280302011', '0280304124') AND
LENGTH(src) > 4
GROUP BY RIGHT(dst,4)
ORDER BY 1;