Я хочу создать новый столбец SQL, используя РЕГИСТР и КОГДА

#sql #oracle

Вопрос:

Это стол, который у меня есть

cnt_dealno договорились сумма
1 азбука 3,000
2 азбука 3,000
3 азбука 3,000
1 защита 5,000
2 защита 5,000

Вот как, я думаю, я бы это закодировал

 select
case when cnt_dealno = '1' then amount
else amount = 0
end as new_amount
from tab
 

Что я пытаюсь сделать , так это когда cnt_dealno = 1 , тогда сумма не меняется. Но когда cnt_dealno это не равно 1 , тогда сумма станет 0 .

Есть ли какой-нибудь способ закодировать это в SQL?

Ответ №1:

Должно быть

 SQL> with test (cnt_dealno, dealno, amount) as
  2    (select 1, 'ABC', 3000 from dual union all
  3     select 2, 'ABC', 3000 from dual union all
  4     select 3, 'ABC', 3000 from dual union all
  5     select 1, 'DEF', 5000 from dual union all
  6     select 2, 'DEF', 5000 from dual
  7    )
  8  select cnt_dealno, dealno, amount,
  9    --
 10    case when cnt_dealno = 1 then amount
 11         else 0
 12    end as new_amount
 13  from test;

CNT_DEALNO DEA     AMOUNT NEW_AMOUNT
---------- --- ---------- ----------
         1 ABC       3000       3000
         2 ABC       3000          0
         3 ABC       3000          0
         1 DEF       5000       5000
         2 DEF       5000          0

SQL>
 

Как вы думаете, зачем вам нужен PL/SQL?

Комментарии:

1. Спасибо за комментарий, этот работает как заклинание. Я пытался сделать это в PL/SQL, поэтому я думаю, что мне нужен PL/SQL с ним. Извините за мою неопытность.

2. Никаких проблем, пожалуйста.