#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;