Sql server 基于相似命名的列名对sqlserver记录中的计数求和
在SQLServer中,我试图编写一个查询,将另一列中具有相似名称的记录相加,然后仍将记录显示为未相加的记录Sql server 基于相似命名的列名对sqlserver记录中的计数求和,sql-server,Sql Server,在SQLServer中,我试图编写一个查询,将另一列中具有相似名称的记录相加,然后仍将记录显示为未相加的记录 Route TransactionType Count F43 555A 100 F43 345A 200 F43 543A 75 F43 765A 125 而不是 Route TransactionType Count F43 555A-44
Route TransactionType Count
F43 555A 100
F43 345A 200
F43 543A 75
F43 765A 125
而不是
Route TransactionType Count
F43 555A-44 35
F43 555A-42 25
F43 555A-47 22
F43 555A-45 18
F43 345A 200
F43 543A 75
F43 765A 125
调度查询示例:
Select Route, TransactionType, Sum(Count) as Sum from
(
Select Route, TransactionType,Count(TrackID) as Count, from TheTable
)A
在交易类型上添加分组依据
SELECT
ROUTE,
SUBSTRING(TransactionType, 1, 4) ,
SUM(TrackID)
FROM TheTable
GROUP BY ROUTE,SUBSTRING(TransactionType, 1, 4)
如果用相似的名字,你的意思是它在那里有“-”符号,那么这可能就是它。 样本数据:
SELECT 'F43' AS Route, '555A-44' AS TransactionType, 35 AS Count
INTO #Temporary
UNION ALL
SELECT 'F43' AS Route, '555A-42' AS TransactionType, 25 AS Count
UNION ALL
SELECT 'F43' AS Route, '555A-47' AS TransactionType, 22 AS Count
UNION ALL
SELECT 'F43' AS Route, '555A-45' AS TransactionType, 18 AS Count
UNION ALL
SELECT 'F43' AS Route, '345A' AS TransactionType, 200 AS Count
UNION ALL
SELECT 'F43' AS Route, '543A' AS TransactionType, 75 AS Count
UNION ALL
SELECT 'F43' AS Route, '765A' AS TransactionType, 125 AS Count
实际查询。我使用交叉应用只是为了让代码看起来更干净:
SELECT T.Route, F.FormattedRoute, SUM(Count) AS TotalCount
FROM #Temporary AS T
CROSS APPLY (SELECT IIF(CHARINDEX('-', T.TransactionType) = 0, T.TransactionType, LEFT(TransactionType, CHARINDEX('-', TransactionType) - 1))) AS F(FormattedRoute)
GROUP BY T.Route, F.FormattedRoute
如果你用谷歌搜索那个错误信息,你会得到什么?这意味着您缺少“GROUP BY”语句…已修复错误,对此表示抱歉。现在我只需要让它做我的初始问题。请修复问题中的代码。当你在group by for transactiontype中说groupname时,你的意思是你称它为transaction type吗?对不起!是的,它的交易类型。编辑了我的答案。谢谢。我从来没有想到过这一点。