Първо трябва да ви кажа, че съм начинаещ в SQL
.
Искам да избера цялата информация, свързана с моя ПЛАН, благодарение на неговия идентификатор, за да ги поставя в DataGridView
в моята C# програма.
Можем да повлияем на кратни 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 дни..
Благодаря !