Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 基于相似命名的列名对sqlserver记录中的计数求和_Sql Server - Fatal编程技术网

Sql server 基于相似命名的列名对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

在SQLServer中,我试图编写一个查询,将另一列中具有相似名称的记录相加,然后仍将记录显示为未相加的记录

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吗?对不起!是的,它的交易类型。编辑了我的答案。谢谢。我从来没有想到过这一点。