powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Фильтрация одинаковых записей в таблице
3 сообщений из 3, страница 1 из 1
Фильтрация одинаковых записей в таблице
    #39785285
bennisi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, такая задача, есть таблица с обьектами, но при объединении с атрибутами получается "каша", помогите, пожалуйста, убрать лишние записи!

таблица с файлами:

idPerent id productversionNULL1СБ11 200Корпус11 201Болт М81NULL2СБ222 300Корпус22 201 Болт М812 202 Винт12203 Гайка1
необходимо соединить с таблицей атрибуты:
id name_type type1 Разработал Иванов1 Наименование МоторДиз1 Раздел спец. Сборка2 Разработал Петров2 Наименование МоторДиз2 Раздел спец. Сборка200Наименование Блок300Наименование Блок201Раздел спец. Стандартные изд.201Марка мат. Сталь202Марка мат. Железо203Раздел спец. Стандартные изд.
получается у некоторых файлов несколько атрибутов, основной "Наименование" , если его нет то "Раздел спец." если и его нет то "Марка мат." , и бывает совсем без атрибутов.
И получить такой результат:
idPerent id productversionname_type typeNULL1СБ1Наименование МоторДиз1 200Корпус1Наименование Блок1 201Болт М81Раздел спец. Стандартные изд.NULL2СБ22Наименование МоторДиз2 300Корпус2Наименование Блок2 201 Болт М82Раздел спец. Стандартные изд.2 202 Винт1Марка мат. Железо2203 Гайка1Раздел спец. Стандартные изд.
Заранее спасибо!
...
Рейтинг: 0 / 0
Фильтрация одинаковых записей в таблице
    #39785319
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with t as
(
 select
  b.id, b.name_type, b.type,
  row_number() over (partition by b.id order by a.n) as rn
 from
  (values (1, 'Наименование'), (2, 'Раздел спец.'), (3, 'Марка мат.')) a(n, name_type) join
  [Таблица с атрибутами] b on b.name_type = a.name_type
)
select
 a.idPerent, a.id, a.product, a.version, t.name_type, t.type
from
 [Таблица с файлами] a left join
 t on t.id = a.id and t.rn = 1;

Или
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
 a.idPerent, a.id, a.product, a.version,
 coalesce(b.name_type, c.name_type, d.name_type) as name_type,
 coalesce(b.type, c.type, d.type) as type
from
 [Таблица с файлами] a left join
 [Таблица с атрибутами] b on b.id = a.id and b.name_type = 'Наименование' left join
 [Таблица с атрибутами] c on b.id = a.id and c.name_type = 'Раздел спец.' left join
 [Таблица с атрибутами] d on b.id = a.id and d.name_type = 'Марка мат.';
...
Рейтинг: 0 / 0
Фильтрация одинаковых записей в таблице
    #39785493
bennisi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm , ты красавчик, большое спасибо!!! первый запрос у меня почему-то дольше выполняет, а второй прям то что надо! Я с самого начала не правильно стал делать запрос-выборку через where , зато благодаря тебе, для себя открыл новую функцию)) - coalesce
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Фильтрация одинаковых записей в таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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