表格结果如下:
姓名 | 职位 | 下属 | 国家 | 价格 |
---|---|---|---|---|
约翰 | 经理 | 何塞 | 在 | 50 |
约翰 | 经理 | 拉朱 | SR | 25 |
约翰 | 经理 | 克里斯 | 在 | 30 |
约翰 | 经理 | 唐 | BN | 10 |
约翰 | 经理 | 何塞 | 在 | 300 |
约翰 | 经理 | 拉朱 | SR | 85 |
约翰 | 经理 | 克里斯 | 在 | 450 |
约翰 | 经理 | 唐 | BN | 100 |
马修 | 人力资源管理 | 阿里 | BH | 20 |
马修 | 人力资源管理 | 尼图 | 在 | 20 |
马修 | 人力资源管理 | 西娜 | 在 | 20 |
我需要得到的实际结果如下:
姓名 | 职位 | 下属 | 国家 | 价格 |
---|---|---|---|---|
约翰 | 经理 | 何塞、拉朱、克里斯、唐 | IN、SR、BN | 1050 |
马修 | 人力资源管理 | ALI,尼图,SEENA | BH,印第安纳州 | 60 |
我尝试过的查询是
Select A.Name as Name, A.Position as Postion, STRING_AGG(B.Subordinate,',') as Sabordinates ,STRING_AGG(A.Country,',') as Country, SUm(C.Rate) from
Emp A
left join Sabordinate B on A.ID= B.SabId
Left join Cost C on C.SId=B.SabId
Group by A.Name,A.Position
但我得到的结果如下,
姓名 | 职位 | 下属 | 国家 | 价格 |
---|---|---|---|---|
约翰 | 经理 | 何塞,拉朱,克里斯,唐,何塞,拉朱,克里斯,唐 | IN、SR、IN、BN、IN、SR、IN、BN | 1050 |
马修 | 人力资源管理 | ALI,尼图,SEENA | BH,印度,印度 | 60 |
将下属名称和一个国家重复两次或三次(名称重复次数就是重复次数) 如果重复的话,我只需要一个名字和国家一次
您可以使用distinct来获取唯一值
选择 A.Name 作为名称,A.Position 作为职位,STRING_AGG(B.Sublined,',') 作为从属,STRING_AGG(A.Country,',') 作为 Country,SUM(C.Rate) from 雇员A (SELECT DISTINCT SabId,下属 FROM Sabord) AS 下属 ON A.ID = Subscribeds.SabId 左连接 成本 C ON C.SId = 下属.SabId 通过...分组 A.姓名,A.职位;