|
Некорректный код обновления таблицы
|
|||
---|---|---|---|
#18+
Всем привет! Есть такой код обновления таблицы: update dsbd_margin_trans t1 set (t1.mdr,t1.id_saler)=(select MDR,id_saler from (SELECT t.dt, t.grafnum, t.id_pos, t.id_saler ,sum(CASE WHEN t.id_type=1 THEN t.amount ELSE t.amount*-1 END) as amount --Исправлена формула ,sum(CASE WHEN t.id_type=1 THEN det.reward ELSE det.reward*-1 END)+sum(CASE WHEN t.id_type=1 THEN det.discount ELSE det.discount*-1 END) AS MDR FROM (select * from transit2.trans@sun where id_cont in ('8CAAEFEA6E0C4D1094B1139F182B6AF1','EF5D606A6E1A47E0AEC712CFF89B030F', '64B1A95E8E244EBDE053044A14ACEA8A')) t JOIN transit2.services@sun ser ON ser.id_usl = t.id_usl LEFT JOIN transit2.trans_detail@sun det ON det.id_trans=t.id_trans and det.id_type=3 WHERE ser.uname = 'л' AND t.grafnum > 0 AND t.id_type!=3 and t.dt >= date '2019-04-01' and t.dt < date '2019-04-02' GROUP BY t.dt, t.grafnum, t.id_pos, t.id_saler) t2 where t1.grafnum=t2.grafnum and t1.id_pos=t2.id_pos and t1.dt=t2.dt and t1.amount=t2.amount); where t1.main_id in (select id_cont from v_tmp_business_products where nvl(name_business,0)='PPS') Код не совсем корректен из-за последнего фильтра (как выяснил, он не все нужные строчки обновляет). Однако когда его убираю, то те значения, которые нужно обновить - код обновляет. А все остальные значения в полях mdr и id_saler затирает... Как доработать этот код, чтобы он не затирал те значения, которые он не нашел? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 18:26 |
|
Некорректный код обновления таблицы
|
|||
---|---|---|---|
#18+
RTFM MERGE ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 18:40 |
|
Некорректный код обновления таблицы
|
|||
---|---|---|---|
#18+
IronMike, начни уже с тега src, а? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 18:44 |
|
Некорректный код обновления таблицы
|
|||
---|---|---|---|
#18+
Elic, спасибо, попробую через merge ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 18:48 |
|
Некорректный код обновления таблицы
|
|||
---|---|---|---|
#18+
IronMike, update ... .... where ... and EXISTS (select MDR,id_saler from (SELECT ............ до закрывающей скобки) .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 18:49 |
|
Некорректный код обновления таблицы
|
|||
---|---|---|---|
#18+
oragraf, а что значит данный тэг? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 18:49 |
|
Некорректный код обновления таблицы
|
|||
---|---|---|---|
#18+
Stax ............ до закрывающей скобки) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 18:50 |
|
Некорректный код обновления таблицы
|
|||
---|---|---|---|
#18+
Stax, Спасибо! А я могу написать: where EXISTS (select MDR,id_saler from (SELECT ............ до закрывающей скобки) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 18:53 |
|
Некорректный код обновления таблицы
|
|||
---|---|---|---|
#18+
IronMike, Сир, Студентам, желающим помощи HOWTO :: Как правильно задавать вопросы Как мне оформить свое сообщение? 1) Полная постановка задачи (без сокращений) 2) Подготовьте тестовые данные (если возможно), лучше в виде with например (не ваш случай): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
2) Покажите что сделали 3) Покажите что получили (Лучше в текстовом виде, а не screenshot) 4) используйте Тэги, читать код без них неудобно 5) "Портянки текста", лучше убрать под spoiler или приложить файлом ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 19:07 |
|
Некорректный код обновления таблицы
|
|||
---|---|---|---|
#18+
IronMike А я могу написать:? от Вас зависит я напр сначала вместо update 1) отлаживал select надо чтоб select t1.* from dsbd_margin_trans t1 where ... возвращал необходимый (правильный) набор строк 2) потом в селект добавлял "фразу" из set select t1.*,(...) st from dsbd_margin_trans t1 where ... проверял результат 3) менял селект на update зи мерже тож неплох, но у меня мало с ним реальной практики ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2019, 09:44 |
|
|
start [/forum/topic.php?fid=52&msg=39889259&tid=1881858]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 150ms |
0 / 0 |