Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сгруппировать по измененному значению поля, а не исходному  [new]
Jazzis
Member

Откуда:
Сообщений: 10
Например есть в базе несколько записей, у которых в 1-ом поле значения совпадают (например, логин юзера), а в другом не совпадают. И вот эти значения другого поля у некоторых юзеров привожу к одному единственному:
select
    case when table1.nkod in (
        "Группа 1",
        "Группа 3",
        "Группа 5" )
    then
        "Особая группа"
    else
        table1.nkod
    end [Группы],
    table1.login [Пользователь],
    ...
from
    table1
group by
    table1.nkod,
    table1.login,
    ...

В итоге мне выводит несколько повторяющихся записей этих юзеров, как если бы заместо "Особая группа" стояли "Группа 1", "Группа 3" и/или "Группа 5".
Как мне "схлопнуть" этих юзеров, чтобы не было таких повторяющихся записей?
Брать исходный список через:
with a as ( ... )
И затем снова его группировать по тем же полям, чтобы он учёл значение "Особая группа" в столбце?
12 окт 16, 08:38    [19771715]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать по измененному значению поля, а не исходному  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Jazzis,

На данный темы ниже https://www.sql.ru/forum/1234095/podschet-summ-strok-v-sql-server-2012
12 окт 16, 08:41    [19771719]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать по измененному значению поля, а не исходному  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
Jazzis
Брать исходный список через:
with a as ( ... )

И затем снова его группировать по тем же полям, чтобы он учёл значение "Особая группа" в столбце?
"Снова группировать" не надо, надо сгруппировать один раз, а в with просто сделать нужную выборку с CASE
Ещё то же самое можно сделать как поздапрос.
Ну и ещё один способ, на который дал ссылку TaPaK - просто повторить CASE в группировке.
12 окт 16, 08:45    [19771727]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать по измененному значению поля, а не исходному  [new]
Jazzis
Member

Откуда:
Сообщений: 10
TaPaK, alexeyvg,

Спасибо большое. Попробуй способ в ссылке, который предложил TaPaK, а затем ваши обмозгую :)
12 окт 16, 08:52    [19771742]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать по измененному значению поля, а не исходному  [new]
invm
Member

Откуда: Москва
Сообщений: 9400
select
    a.[Группы],
    table1.login [Пользователь],
    ...
from
    table1 cross apply
    (select case when table1.nkod in (
        "Группа 1",
        "Группа 3",
        "Группа 5" )
    then
        "Особая группа"
    else
        table1.nkod
    end [Группы]) a
group by
    a.[Группы],
    table1.login,
    ...
12 окт 16, 10:46    [19772213]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить