Объединение строк по одному признаку и присвоение одного значения для группы

Вопрос заключается в следующем: Есть запрос, который выводит группу строки и идентификатор товара.

select group, idgoods from docs as ds where iddoc = 123849 order by 1

Результат запроса

введите сюда описание изображения

Необходимо, что бы если поле group было одинаковое с соседней строкой то поле idgoods принимало значение > 0 если таковое имеется.

Пример:

введите сюда описание изображения

Как можно это реализовать по средствам SQL?


Ответы (1 шт):

Автор решения: Denis Rubashkin
SELECT
    ds.[group],
    ds.idgoods,
    ISNULL(x.idgoods, 0) AS 'NewColumn'
FROM docs as ds
    LEFT JOIN (
        SELECT
            d.[group],
            MIN(d.idgoods) AS 'idgoods'
        FROM docs d
        WHERE d.iddoc = ds.iddoc
            AND d.idgoods > 0
        GROUP BY d.[group]
    ) x ON x.[group] = ds.[group]
WHERE ds.iddoc = 123849
ORDER BY ds.[group]
→ Ссылка