Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / инкремент / 3 сообщений из 3, страница 1 из 1
08.06.2015, 17:11:18
    #38979360
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инкремент
Всем доброго времени суток!
Есть запрос, никак не придумаю как добавить условие в строке ROUND(h.billsec/60, 2) as billmin:
если h.billsec==0 h.billsec =1
как можно лучше сделать?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT b.calldate,b.src, CONCAT(b.prefix, b.number) as dst , b.billsec, b.billmin, z.price, ROUND(CEIL(b.billmin)*z.price, 2) as bill, t.numbertype, i.ispname,s.subregionname,r.regionname
FROM (SELECT h.calldate ,h.src,  SUBSTRING( RIGHT( LPAD( h.dst, 12,  '9' ) , 10 ) , 1, 3 ) AS prefix ,SUBSTRING( RIGHT( LPAD( h.dst, 12,  '9' ) , 10 ) , 4, 7 ) AS number, h.billsec , ROUND(h.billsec/60, 2) as billmin
FROM  asteriskcdrdb.cdr h WHERE  calldate BETWEEN  '2015-05-01 00:00:00' AND  '2015-05-31 23:59:59' AND LENGTH( h.src ) <=3 AND LENGTH( h.dst ) >3 AND h.disposition='ANSWERED') as b 
inner join astcdr.codes  c on b.prefix=c.abcdef
inner join astcdr.zoneinfo zi on zi.uid=c.zoneinfouid
inner join astcdr.zone z on z.uid=zi.zoneuid
inner join astcdr.isp i on i.uid=zi.ispuid
inner join astcdr.numtype t on t.uid=c.type
inner join astcdr.region r on r.uid=zi.regionuid
inner join astcdr.subregion s on s.uid=zi.subregionuid
WHERE  b.number between c.start and c.end;
...
Рейтинг: 0 / 0
08.06.2015, 17:26:54
    #38979399
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инкремент
RTFM "CASE"
...
Рейтинг: 0 / 0
08.06.2015, 17:40:36
    #38979433
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инкремент
AkinaRTFM "CASE"
Спасибо, получилось!
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT b.calldate,b.src, CONCAT(b.prefix, b.number) as dst , b.duration, b.billsec, b.billmin, z.price, ROUND(CEIL(b.billmin)*z.price, 2) as bill, t.numbertype, i.ispname,s.subregionname,r.regionname
FROM (SELECT h.calldate ,h.src,  SUBSTRING( RIGHT( LPAD( h.dst, 12,  '9' ) , 10 ) , 1, 3 ) AS prefix ,SUBSTRING( RIGHT( LPAD( h.dst, 12,  '9' ) , 10 ) , 4, 7 ) AS number,h.duration, h.billsec , 
ROUND((CASE h.billsec WHEN 0 THEN 1 ELSE h.billsec END)/60, 2) as billmin
FROM  asteriskcdrdb.cdr h WHERE  calldate BETWEEN  '2015-05-01 00:00:00' AND  '2015-05-31 23:59:59' AND LENGTH( h.src ) <=3 AND LENGTH( h.dst ) >3 AND h.disposition='ANSWERED') as b 
inner join astcdr.codes  c on b.prefix=c.abcdef
inner join astcdr.zoneinfo zi on zi.uid=c.zoneinfouid
inner join astcdr.zone z on z.uid=zi.zoneuid
inner join astcdr.isp i on i.uid=zi.ispuid
inner join astcdr.numtype t on t.uid=c.type
inner join astcdr.region r on r.uid=zi.regionuid
inner join astcdr.subregion s on s.uid=zi.subregionuid
WHERE  b.number between c.start and c.end;
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / инкремент / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]