Нужна помощь MSSQL запрос, чтобы привести таблицу с двумя столбцами в один, показывая уникальное значение поля 1 и соответствующие значения в поле 2 (в этом порядке)?

Изображение текущего состояния и желаемого состояния

Нужна помощь MSSQL запрос, чтобы привести таблицу с двумя столбцами в один, показывая уникальное значение поля 1 и соответствующие значения в поле 2 (в этом порядке)? См. изображение прикрепленное в связи выше

1 ответ

  1. Ваш запрос звучит довольно странно, но если вы хотите сделать это, один из способов-использовать rollup + grouping_id, как это:

    select case when grouping_id(field2) = 1 then field1 else field2 end
    from yourtable
    group by field1, rollup(field2)
    order by field1, grouping_id(field2) desc, field2
    

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

    Это вернется:

    x
    a
    b
    c
    d
    y
    e
    f
    g
    z
    h
    i
    

    Изменить: как перечислить имена таблиц и столбцов:

    select case when grouping_id(c.name) = 1 then t.name else c.name end
    from sys.tables t join sys.columns c on t.object_id = c.object_id
    group by t.name, rollup(c.name)
    order by t.name,c.name