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