оператор case не обновляет все значения в sql

#sql

#sql

Вопрос:

Попытка обновить флаг Office, чтобы обновить все строки для одного и того же утверждения, если оно соответствует критериям. Проблема в том, что он обновляет 1 строку, но не другую.

таблица A

ID номер invoice_ maker_no Офис
123 11111 45 N
456 11111 GS Y

таблица B

ID номер invoice_ maker_no Офис
123 11111 45 Y
456 11111 GS Y

код:

 SELECT c.invoice_number
      ,c.maker_no
      ,CASE WHEN c.maker_no IN('GS','77') THEN 'Y' ELSE 'N' END AS Office
FROM claims c
 

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

1. какую СУБД вы используете?

2. Это выбор, а не обновление

3. И это выражение падежа, а не утверждение.

Ответ №1:

Я думаю, вам нужна оконная функция:

 SELECT c.invoice_number, c.maker_no,
       MAX(CASE WHEN c.maker_no IN('GS','77') THEN 'Y' ELSE 'N' END) OVER (PARTITION BY c.invoice_number) AS Office
FROM claims c;