Способ объединения ненулевых столбцов таблицы SQL на основе идентификатора

#mysql #sql

Вопрос:

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

Ввод -> введите описание изображения здесь

Вывод ->введите описание изображения здесь

Ответ №1:

Агрегируйте по ID и выберите MAX значение каждого столбца:

 SELECT ID, MAX(ColA) AS ColA, MAX(ColB) AS ColB, MAX(ColC) AS ColC
FROM yourTable
GROUP BY ID;
 

Изменить: Для битового столбца в SQL Server вы можете привести к целому числу, прежде чем принимать максимальное значение:

 SELECT
    ID,
    MAX(CAST(ColA AS int)) AS ColA,
    MAX(CAST(ColB AS int)) AS ColB,
    MAX(CAST(ColC AS int)) AS ColC
FROM yourTable
GROUP BY ID;
 

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

1. Есть ли другой способ, чем использовать MAX? МАКС может быть неприменим для нескольких типов данных, таких как BIT.

2. @Jim, насколько я знаю, приведенная выше логика будет работать с нулевым битом.

3. К сожалению, я получил этот комментарий при попытке использовать мою таблицу SQL Msg 8117, Уровень 16, Состояние 1, строка 9 Бит типа данных операнда недопустим для оператора max.

4. @Jim Ответ обновлен с опцией SQL Server.