Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите, пожалуйста, как написать скрипт / 4 сообщений из 4, страница 1 из 1
04.05.2019, 17:22
    #39809739
Ademovo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, пожалуйста, как написать скрипт
Необходимо клиентам со статусом за исключением статуса(customerremark16)=верный, в поле customerremark26 через разделитель | ввести сумму заказов данного клиента за 1 неделю, 2 недели, 3 недели, 4 недели

Я только учусь, и поэтому вопросы, наверное, глупые. Заранее извиняюсь:)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
declare cursor customers is
select customernumber, customerremark26. customerremark16,
DATE_ADD(orderdate, 7 day) one_week,
DATE_ADD(orderdate, 14 day) two_week,
DATE_ADD(orderdate, 21 day) three_week,
DATE_ADD(orderdate, 28 day) four_week,(с этими полями, я буду сравнивать)
order_sum
from customer
where customerremark16<>'Внутренний'
begin for v_row in customer LOOP



и вот дальше я в ступоре, как делать проверку, чтобы сумма была именно в указанном диапазоне, а после это все вывести через |

возможно так:
Код: plsql
1.
2.
update customerremark26=sum
where orderdate<one_week 

(но в таком случае посчитает ли он, именно сумму в заданном диапазоне, а если и да, то как совершить проверку далее и вывести все разом)
спасибо!
...
Рейтинг: 0 / 0
04.05.2019, 18:15
    #39809757
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, пожалуйста, как написать скрипт
Вообще-то DATE_ADD это MySQL а не Oracle. Теперь определи что есть неделя. Скажем Понедельник - Воскресенье:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
select  customer.customernumber,
        SUM(
            CASE
              WHEN TRUNC(SYSDATE,'IW') >= order.orderdate THEN order.order_sum
            END
           ) || '|' ||
        SUM(
            CASE
              WHEN TRUNC(SYSDATE,'IW') - 7 >= order.orderdate THEN order.order_sum
            END
           ) || '|' ||
        SUM(
            CASE
              WHEN TRUNC(SYSDATE,'IW') - 14 >= order.orderdate THEN order.order_sum
            END
           ) || '|' ||
        SUM(
            CASE
              WHEN TRUNC(SYSDATE,'IW') - 21 >= order.orderdate THEN order.order_sum
            END
           ) customerremark26
  from  customer,
        order
  where customer.customerremark16 <> 'Внутренний'
    and customer.customernumber = order.customernumber
  group by customer.customernumber
/



SY.
...
Рейтинг: 0 / 0
04.05.2019, 19:57
    #39809773
Ademovo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, пожалуйста, как написать скрипт
SY,
спасибо
Как я понимаю TRUNC(SYSDATE,'IW') , если опираться на то, что сегодня 04.05.2019 будет 01.05.2019
В итоге получается он показывает сумму заказов за последние 4 недели?
А если мне нужно найти сумму заказов за 1 неделю, 2 неделю итд, начиная отсчет именно от начала данной мне даты заказа orderdate(дата первого заказа клиента).
то тогда можно ли это как то реализовать?
...
Рейтинг: 0 / 0
04.05.2019, 22:10
    #39809796
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, пожалуйста, как написать скрипт
AdemovoSY,
А если мне нужно найти сумму заказов за 1 неделю, 2 неделю итд, начиная отсчет именно от начала данной мне даты заказа orderdate(дата первого заказа клиента).
то тогда можно ли это как то реализовать?

За 2 неделю:

Код: plsql
1.
WHEN orderdate >= данной мне даты заказа - 14 and  orderdate < данной мне даты заказа - 7



SY.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите, пожалуйста, как написать скрипт / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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