|
|
|
суммирование с условием
|
|||
|---|---|---|---|
|
#18+
Добрый день, посоветуйте что можно сделать. Есть триггерная функция которая вычисляет сумму лотов из таблицы lots (SUM(l.start_price)) и пишет это значение в другую таблицу(start_price). Нужно изменить запрос так, чтобы сумма лотов вычислялась с учетом типа валюты лота (l.currency). Например если рубли то ничего не меняется, если тип валюты другой, то должен умножаться на коэффициент и это всё суммируется. Раньше выглядело так: Код: plsql 1. Можно ли такое осуществить? Как правильно это оформить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 15:31:19 |
|
||
|
суммирование с условием
|
|||
|---|---|---|---|
|
#18+
SUM(l.start_price * l.currency) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 15:57:34 |
|
||
|
суммирование с условием
|
|||
|---|---|---|---|
|
#18+
l.currency это id валюты, которое связывается с таблицей курсов валют. Мне нужно чтобы если валюта не рубли то умножалось на курс, если валюта то ничего. И потом всё складывалось все значения. На php было бы примерно так: Код: php 1. 2. 3. 4. 5. на pgsql не знаю как так написать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 12:53:23 |
|
||
|
суммирование с условием
|
|||
|---|---|---|---|
|
#18+
Catty, если валюта не рубли то ничего не умножается то есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 12:54:45 |
|
||
|
суммирование с условием
|
|||
|---|---|---|---|
|
#18+
FROM lots AS l LEFT JOIN currency AS c ON (l.currency=c.id) SUM(l.start_price * coalesce(c.ratio, 1)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:02:11 |
|
||
|
суммирование с условием
|
|||
|---|---|---|---|
|
#18+
спорим там в таблцие курсов еще и даты и есть, и курсы надо на дату брать, и не просто на ближайшую не большую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 14:09:46 |
|
||
|
суммирование с условием
|
|||
|---|---|---|---|
|
#18+
Cattyl.currency это id валюты, которое связывается с таблицей курсов валют. Мне нужно чтобы если валюта не рубли то умножалось на курс, если валюта то ничего. И потом всё складывалось все значения. На php было бы примерно так: Код: php 1. 2. 3. 4. 5. на pgsql не знаю как так написать SUM(l.start_price * case when l.currency = 'RUB' then 1 else rate end) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 14:10:32 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=128&tid=1998692]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
620ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 881ms |

| 0 / 0 |
