这很难解释,所以我将尝试演示,这都是在MS SQL存储过程中完成的。
我有一份记录列表
我有一个脚本,目前将记录转换为:
2x 10 foos + 15 foos + 3x 35 bahs + 98 foobahs + 2x 99foobahs + 2x Geoff + Brain + 2x James 99 + James
我需要的是在字符串的开头添加所有类似的记录,其中theree是一个数值,导致
35 foos + 105 foos + 296 foobahs + 2x Geoff + Brain + 2x James 99 + James
答案 0 :(得分:0)
SELECT Name, SUM(Quantity) FROM @tableVar GROUP BY Name
随时询问是否有任何不清楚的事情
答案 1 :(得分:0)
分割数字和项目并将它们作为单独的列存储在表格中会更好。 SQL服务器中的字符串操作不好。话虽如此,您可以尝试以下查询
此查询将值拆分为数字和项目,然后汇总相似项目并将它们连接到单个值。非常难看,但希望它有效
;WITH items
AS
(
SELECT CAST(
CASE WHEN PATINDEX('%[^0-9]%',columnName)>1
THEN SUBSTRING(columnName,1,PATINDEX('%[^0-9]%',columnName))
ELSE '1' END
AS INT)
AS Number,
CASE WHEN PATINDEX('%[^0-9]%',columnName)>1
THEN SUBSTRING(columnName,PATINDEX('%[^0-9]%',columnName),LEN(columnName))
ELSE columnName END
AS Item
FROM theTable
)
SELECT CAST(SUM(Number) AS VARCHAR(10)) + ' ' + item + ' +' AS 'text()'
FROM items
GROUP BY item
FOR XML Path('')