Создать новый столбец на основе строк в sql

У меня проблема. Мне нужно создать новый столбец на основе значений строки. так что мой стол

id | Name   |  status |   
-+-------+-------
1  | ANNA   |  M      | 
1  | anna   | null    | 
2  | DIVA   | null    | 
2  | diva   | null    |

на основе столбца состояния я хочу создать столбец new_status. где он проверит, является ли идентификатор одинаковым, а значение любой строки столбца состояния не равно нулю, тогда новый столбец будет иметь это ненулевое значение, иначе он будет нулевым. как на картинке ниже

id | Name   |  status | new_status
--+------+-------+------------
1  | ANNA   |  M      | M
1  | anna   | null    | M
2  | DIVA   | null    | null
2  | diva   | null    | null

Пожалуйста, помогите мне с этим.

Пожалуйста, размещайте данные в виде текста, а не изображений. Какие rdbms вы используете: mysql, sql server и т.д.?

Kendle 17.03.2022 13:22

я использую mysql. Я пытался опубликовать данные в виде текста, но это становится очень грязным. поэтому опубликуйте его как изображение.

Saddaf Afrin 17.03.2022 13:25
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Два комментария, поскольку вы не предоставляете используемую СУБД:

  1. Я предполагаю, что ваша СУБД поддерживает функцию LAST_VALUE(... IGNORE NULLS) OLAP.
  2. Я беззастенчиво пользуюсь тем, что заглавные буквы стоят перед строчными. В противном случае вам понадобится третий столбец sequence внутри значений id; Таблицы SQL по умолчанию отсортированы по нет, и тогда я бы PARTITION BY id ORDER BY sequence).

Но иначе:

\pset null (null)
WITH
indata(id,nam,status) AS (
            SELECT 1,'ANNA','M'
  UNION ALL SELECT 1,'anna',NULL
  UNION ALL SELECT 2,'DIVA',NULL
  UNION ALL SELECT 2,'diva',NULL
)
SELECT
  *
, LAST_VALUE(status IGNORE NULLS) OVER(PARTITION BY id ORDER BY nam) AS new_status
FROM indata
ORDER BY id,nam;

-- out Null display is "(null)".
-- out  id | nam  | status | new_status 
-- out ----+------+--------+------------
-- out   1 | ANNA | M      | M
-- out   1 | anna | (null) | M
-- out   2 | DIVA | (null) | (null)
-- out   2 | diva | (null) | (null)

Другие вопросы по теме