C# 如何在STRING_AGG之后删除重复项?
首先我要告诉你,我是C# 如何在STRING_AGG之后删除重复项?,c#,sql,duplicates,azure-sql-database,string-aggregation,C#,Sql,Duplicates,Azure Sql Database,String Aggregation,首先我要告诉你,我是SQL的初学者 我想选择与我的计划相关的所有信息,因为它的id将它们放在我的C#程序的DataGridView中 我们可以影响多个电压水平,接触网类型等。。。它将存储在一个名为plans\u into\u voltage和plans\u into\u type的表中 因此,当我尝试选择与计划相关的所有信息时,如果计划具有多个电压和/或多个接触网类型,它将复制如下行: 然后我尝试STRING\u AGG,但现在我的行中有重复项,我不知道如何避免/删除它们 这是我的疑问: SE
SQL
的初学者
我想选择与我的计划相关的所有信息,因为它的id将它们放在我的C#程序的DataGridView
中
我们可以影响多个电压水平
,接触网类型
等。。。它将存储在一个名为plans\u into\u voltage
和plans\u into\u type
的表中
因此,当我尝试选择与计划相关的所有信息时,如果计划具有多个电压和/或多个接触网类型,它将复制如下行:
然后我尝试STRING\u 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
但我想要的是:
我已经检查过了,但是我不知道如何用我的查询实现它
有人能帮我吗?我两天来一直在这麻烦事上
谢谢 试试这个查询怎么样:
SELECT TOP 20 pinfos.id
, STRING_AGG(pinfos.plan_name, '|')
, STRING_AGG (voltage.name, '|') AS vname
, STRING_AGG(catType.name, '|') AS catname
FROM (
SELECT DISTINCT pinfos.id
pinfos.plan_name,
voltage.name,
catType.name
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
根据以下语句修改此查询:
SELECT STRING_AGG(data)
FROM (
SELECT DISTINCT FROM ...
)
我用我的桌子做了测试,结果很好
“我的员工”表中的所有数据:
运行我的演示查询:
SELECT emp.deptno, STRING_AGG(emp.ename,',') AS ename from (
SELECT DISTINCT ename, deptno FROM employee) as emp
GROUP BY emp.deptno
更新:
此查询无法按预期工作
但恭喜你解决了这个问题:
由于我的c#程序中有一个字典,我使用了多个查询并加入了它们,现在工作正常
希望这能有所帮助。谢谢你的帮助,我认为我们走的路是对的,但我仍然有错误。1) 我不得不添加
作为ptest
between')和“groupbypinfos.id”,因为它说语法不正确。2) 现在,使用“正确”语法,我遇到了SQL错误4104:无法绑定多部分标识符“pinfos.id”。我尝试了一些方法,但没有成功,也许你会发现问题出在哪里。我解决了所有错误,现在的查询看起来是这样的:不幸的是,它不起作用,我得到的结果与以前相同。你是否运行了选择DISTINCT pinfos.id作为planid,pinfos.plan\u name AS planname…
语句来测试重复值是否已被排除?不太可能,我只是在运行SELECT DISTINCT查询时得到的。我想这是由于表左联接较多造成的。可能选择DISTINCT
仅对一个表有效,或者尝试更改左连接,然后再次测试。