Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
bennisi Member Откуда: Сообщений: 10 |
Доброго времени суток, такая задача, есть таблица с обьектами, но при объединении с атрибутами получается "каша", помогите, пожалуйста, убрать лишние записи! таблица с файлами:
необходимо соединить с таблицей атрибуты:
получается у некоторых файлов несколько атрибутов, основной "Наименование", если его нет то "Раздел спец." если и его нет то "Марка мат.", и бывает совсем без атрибутов. И получить такой результат:
Заранее спасибо! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13 мар 19, 12:08 [21831137] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9646 |
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;Или 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 = 'Марка мат.'; |
13 мар 19, 12:44 [21831199] Ответить | Цитировать Сообщить модератору |
bennisi Member Откуда: Сообщений: 10 |
invm, ты красавчик, большое спасибо!!! первый запрос у меня почему-то дольше выполняет, а второй прям то что надо! Я с самого начала не правильно стал делать запрос-выборку через where, зато благодаря тебе, для себя открыл новую функцию)) - coalesce |
13 мар 19, 16:54 [21831535] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |