Sascha Manns Ответов: 1

Дескриптор списка один раз


Привет Форумчане,
извините за некоммуникабельный заголовок вопроса. Но я не знаю точно, как это описать.

Моя ситуация такова. У меня есть база данных MS SQL с таблицей:

VIN | описание | ImagePath
123 | Крыло | C:\123\Image1.jpg
123 | Крыло | C:\123\Image2.jpg
123 | Крыло | C:\123\Image3.jpg
124 | Капюшон | C:\124\Image1.jpg

Так что описание и vin-это одно и то же. Но для этого урона у меня есть 3 фотографии.

Теперь я хотел бы построить SQL-оператор, который перечисляет каждый дескриптор один раз. Может быть, кто-нибудь знает, как это сделать?

Что я уже пробовал:

select distinct * from BewertungMinder
where WENumber = '123'

Santosh kumar Pithani

Не вставляйте повторяющиеся значения imagepath "C:\123\Image3.jpg-на колонке вин.Поддерживайте первичный ключ на таблице.

Sascha Manns

Привет Сантош,
большое вам спасибо за вашу быструю помощь. Он отлично работает :-)
Привет Саша

Santosh kumar Pithani

Добро пожаловать.- дай мне звезды .:-)

Sascha Manns

Готово *большой палец вверх*

1 Ответов

Рейтинг:
5

Santosh kumar Pithani

CREATE TABLE #Temp(VIN INT, Description VARCHAR(10),ImagePath NVARCHAR(50));
INSERT INTO #Temp(VIN,Description,ImagePath)
VALUES
(123 ,'Fender','C:\123\Image1.jpg'),
(123 ,'Fender','C:\123\Image2.jpg'),
(123 ,'Fender','C:\123\Image3.jpg'),
(124 ,'Hood',' C:\124\Image1.jpg');

SELECT 
 DISTINCT VIN
 ,Description,
 STUFF(
        (select ','+ImagePath from #TEMP AS T1 
       where T1.VIN=T2.VIN FOR XML PATH(''),type
        ).value('.','NVARCHAR(100)'),1,1,'') AS ImagePath

FROM #TEMP AS T2;

OUTPUT:-
------------------------------------
VIN  | Description  | ImagePath
------------------------------------
123	Fender	  C:\123\Image1.jpg,C:\123\Image2.jpg,C:\123\Image3.jpg
124	Hood	  C:\124\Image1.jpg