2016-10-10 2 views
0

У меня есть таблица с дублирующимися идентификаторами, но другие значения во втором столбце. Вместо удаления всех дубликатов с помощью DISTINCT мне нужна 1 строка с идентификатором и несколькими столбцами со значениями из второго столбца.SQL повторяющиеся значения в нескольких столбцах

Вот что я имею в виду: (должно стать результатом)

Original

Result

+2

Каких 'СУБД 'вы используете тег, который также –

+0

Пожалуйста, укажите, является ли количество столбцов в результирующей таблице константой (т.е. вы знаете все возможные значения вашего су rce table второй столбец) или динамического роста (вы не знаете все возможные значения для второго столбца). – lospejos

+0

Вторая колонка должна быть динамической. – Flexxzor

ответ

0

Хорошо мне удалось это исправить с этим:

WITH cte AS (SELECT top 1000 *, ROW_NUMBER()OVER(PARTITION BY 
id ORDER BY id) as RN FROM dbo.books) SELECT top 
1000 a.id, a.category 
, b.category as category2 
, c.category as category3 
, d.category as category4 
from cte a 
LEFT join cte b 
on a.id = b.id 
and a.RN = b.RN -1 
LEFT JOIN cte c 
ON a.id = c.id 
AND a.RN = c.RN -2 
LEFT JOIN cte d 
ON a.id = d.id 
AND a.RN = d.RN -3 
WHERE a.RN = 1 
+0

Проблема, с которой я все еще сталкиваюсь, заключается в том, что мне нужно объединить этот запрос с другим. У меня есть еще один запрос, который имеет простой оператор SELECT FROM WHERE, но с внутренним соединением с этим (dbo.books). Я не могу сделать из них 1 запрос. – Flexxzor

Смежные вопросы