powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Список уникальных записей в каждой колонке
6 сообщений из 6, страница 1 из 1
Список уникальных записей в каждой колонке
    #39690060
Hamber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходные данные.

Есть таблица @a - здесь находятся идентификаторы людей
Есть таблица @b - здесь у каждого человека, есть какое-то количество счетов, разделенных по типу.

Задача.
Вывести в плоском виде список неповторяющихся уникальных счетов для каждого типа счета.

К примеру у клиента 1 есть:
счет 1 (тип 1)
счет 2 (тип 1)
счет 3 (тип 2)

В результате хотим получить:
IdСчет1Счет211212NULL

Если будет клиент 2 со счетами:
счет 3 (тип 2)

В результате хотим получить:
IdСчет1Счет22NULL


Код: sql
1.
SELECT @@VERSION


Код: plaintext
Microsoft SQL Server 2017

Пример исходных данных:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
DECLARE @b TABLE (id INT, typ INT,account INT);

INSERT INTO @b
VALUES
(1, 1, 1),
(1, 1, 2),
(1, 2, 1),
(1, 2, 2),

(2, 1, 1),
(2, 1, 2),
(2, 2, 1),

(3, 2, 1),
(3, 2, 2),
(3, 1, 1),

(4,1,1),
(5,2,1),

(6,1,1),
(6,1,2),
(6,1,3),
(6,1,4),
(6,2,1);



Требуемый результат:
idB1accountB2account1111222 1122NULL3113NULL241NULL 5NULL161162NULL 63NULL64NULL
...
Рейтинг: 0 / 0
Список уникальных записей в каждой колонке
    #39690072
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
select
 coalesce(a.id, b.id), a.account, b.account
from
 (select id, account from @b where typ = 1) a full join
 (select id, account from @b where typ = 2) b on b.id = a.id and b.account = a.account
order by
 coalesce(a.id, b.id);
...
Рейтинг: 0 / 0
Список уникальных записей в каждой колонке
    #39690082
Hamber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm, Наверное некорректный пример привел, полагая что счета у разных людей одинаковы.

Вот на таком примере исходных данных:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
DECLARE @a TABLE(id INT);

INSERT INTO @a VALUES (1),(2),(3),(4),(5),(6);

DECLARE @b TABLE
(
    id INT,
    typ INT,
    account INT
);

INSERT INTO @b
VALUES
(1, 1, 1),
(1, 1, 2),
(1, 2, 3),
(1, 2, 4),
(2, 1, 5),
(2, 1, 6),
(2, 2, 7),
(3, 2, 8),
(3, 2, 9),
(3, 1, 10),
(4, 1, 11),
(5, 2, 12),
(6, 1, 13),
(6, 1, 14),
(6, 1, 15),
(6, 1, 16),
(6, 2, 17);
...
Рейтинг: 0 / 0
Список уникальных записей в каждой колонке
    #39690092
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
select
 coalesce(a.id, b.id), a.account, b.account
from
 (select distinct id, account, row_number() over (partition by id order by account) as rn from @b where typ = 1) a full join
 (select distinct id, account, row_number() over (partition by id order by account) as rn from @b where typ = 2) b on b.id = a.id and b.rn = a.rn
order by
 coalesce(a.id, b.id), coalesce(a.rn, b.rn);

?
...
Рейтинг: 0 / 0
Список уникальных записей в каждой колонке
    #39690095
Hamber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm, тьфу ты :) Как все легко оказалось. Спасибо огромное)

А я уже начал мудрить через GROUPING SETS / DENSE_RANK.
...
Рейтинг: 0 / 0
Список уникальных записей в каждой колонке
    #39690098
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправка
Код: sql
1.
2.
3.
4.
5.
6.
7.
select
 coalesce(a.id, b.id), a.account, b.account
from
 (select id, account, row_number() over (partition by id order by account) as rn from @b where typ = 1 group by id, account) a full join
 (select id, account, row_number() over (partition by id order by account) as rn from @b where typ = 2 group by id, account) b on b.id = a.id and b.rn = a.rn
order by
 coalesce(a.id, b.id), coalesce(a.rn, b.rn);
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Список уникальных записей в каждой колонке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]