MSSQL – GROUP_CONCAT
发布时间:2021-02-01 14:37:25 所属栏目:MsSql教程 来源:网络整理
导读:以下是示例数据: IdProduit Localisation Qte_EnMain4266864286880063006 E2-R40-B-T 13.000004266864286880063006 E2-R45-B-T 81.000004266864286880063007 E2-R45-C-T 17.000004266864286880063008 E2-R37-B-T 8.00000 这就是我想要的 IdProduit AllLoc
以下是示例数据: IdProduit Localisation Qte_EnMain 4266864286880063006 E2-R40-B-T 13.00000 4266864286880063006 E2-R45-B-T 81.00000 4266864286880063007 E2-R45-C-T 17.00000 4266864286880063008 E2-R37-B-T 8.00000 这就是我想要的 IdProduit AllLocalisation 4266864286880063006 E2-R40-B-T (13),E2-R45-B-T (81) 4266864286880063007 E2-R45-C-T (17) 4266864286880063008 E2-R37-B-T (8) 我在论坛上看了GROUP_CONCAT的所有例子,我尝试了几个测试. 我真的不懂STUFF(). 这是我想做的事情: SELECT a.IdProduit,GROUP_CONCAT( CONCAT(b.Localisation,' (',CAST(ROUND(a.Qte_EnMain,0) AS NUMERIC(36,0)),')') ) AS AllLocation FROM ogasys.INV_InventENTLoc a LEFT JOIN ogasys.INV_LocName b ON a.IdLoc = b.IdLoc GROUP BY a.IdProduit,b.Localisation,a.Qte_EnMain 现在因为GROUP_CONCAT不能和MSSQL一起工作,这是我在这个论坛上用所有例子创建的查询. SELECT DISTINCT a1.IdProduit,STUFF((SELECT DISTINCT '' + b2.Localisation FROM ogasys.INV_InventENTLoc a2 LEFT JOIN ogasys.INV_LocName b2 ON a2.IdLoc = b2.IdLoc WHERE a2.IdLoc = a1.IdLoc FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,'') data FROM ogasys.INV_InventENTLoc a1 LEFT JOIN ogasys.INV_LocName b1 ON a1.IdLoc = b1.IdLoc ORDER BY a1.IdProduit 查询仅按行返回一个本地化我不明白如何使此查询工作. 编辑: 这是我的情况的解决方案: SELECT a.IdProduit,STUFF( (SELECT ',' + b2.Localisation + ' (' + CAST(CAST(ROUND(a2.Qte_EnMain,0)) AS VARCHAR(32)) + ')' FROM ogasys.INV_InventENTLoc a2 LEFT JOIN ogasys.INV_LocName b2 ON a2.IdLoc = b2.IdLoc WHERE a.IdProduit = a2.IdProduit FOR XML PATH ('')),'') AS AllLocalisation FROM ogasys.INV_InventENTLoc a LEFT JOIN ogasys.INV_LocName b ON a.IdLoc = b.IdLoc GROUP BY a.IdProduit 解决方法使用STUFFdeclare @table table (IdProduit varchar(100),Localisation varchar(50),Qte_EnMain float) insert into @table values ('4266864286880063006','E2-R40-B-T',13.00000),('4266864286880063006','E2-R45-B-T',81.00000),('4266864286880063007','E2-R45-C-T',17.00000),('4266864286880063008','E2-R37-B-T',8.00000) select IdProduit,STUFF ( (SELECT ',' + localisation + concat(' (',cast(qte_enMain as varchar(4)),') ') FROM @table t2 where t2.IdProduit = t1.IdProduit FOR XML PATH('')),'' ) from @table t1 group by IdProduit (编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 业界的高度认可,小聪软件深圳专卖店开业
- 小心显示器“过劳死”——细说显示器带宽与品质
- BenQ Joybee等你命名,丰富奖品让你拿!
- 使用SQL逐字翻译字符串
- 在ASP.NET 2.0中操作数据之四十七:用SqlDataSource控件插入
- 承启AA5700U:全力放纵GeForce FX 5700 Ultra
- SQL Server调用存储过程的方式有什么?怎样实现?
- ASP.NET中GridView、DataList、DataGrid三个数据控件foreac
- 在SQL Server 2008中使用OPENXML存储过程 – INSERT命令与X
- sql-server – SharePoint 2007和SQL Server默认排序规则的
站长推荐
热点阅读