Прежде всего, я должен сказать вам, что я новичок в SQL
.
Я хочу выбрать всю информацию, связанную с моим ПЛАНОМ, благодаря его идентификатору, чтобы поместить их в DataGridView
в моей программе на С#.
Мы можем повлиять на множители voltage levels
, catenary types
и т. д. на этот план, и он будет храниться в таблице с именами plans_into_voltage
и plans_into_type
.
Поэтому, когда я пытаюсь выбрать всю информацию, связанную с планом, если он имеет несколько напряжений и/или много типов контактной сети, он будет дублировать такие строки:
Затем я попытался STRING_AGG
, но теперь у меня есть дубликаты в строке, и я не знаю, как их избежать/удалить.
Это мой запрос:
SELECT TOP 20 pinfos.id
, STRING_AGG(pinfos.plan_name, '|')
, STRING_AGG (voltage.name, '|') AS vname
, STRING_AGG(catType.name, '|') AS catname
FROM [allocation_schematic.information].primary_infos pinfos
LEFT JOIN [allocation_schematic.types].plans_into_type pit
ON pinfos.id = pit.id_plan
LEFT JOIN [allocation_schematic.types].catenary_type catType
ON pit.id_type = catType.id
LEFT JOIN [allocation_schematic.types].plans_into_voltage pot
ON pinfos.id = pot.id_plan
LEFT JOIN [allocation_schematic.types].voltage voltage
ON pot.id_voltage = voltage.id
GROUP BY pinfos.id
Но я хочу, чтобы это было так:
Я уже проверил это первое решение и этот второй, но я не понимаю, как реализовать его с моим запросом.
Может ли кто-нибудь помочь мне с этим, пожалуйста? Мучаюсь с этой бедой уже 2 дня..
Спасибо !