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默认排序规则的
站长推荐
热点阅读


