0

我有一个SELECT包含CASE表达式的查询。我有一个带有文本“GrandTotalGroupTotal”的“总计”列。第二列包含文本“GrandTotalGroup”。为了对“GrandTotalGroup”列中的行求和并放入“GrandTotalGroupTotal”行,我在 CASE 语句中识别正确的行,如下所示。

我需要从列值中截断最后一个“总计”。此 SELECT 语句有效。如果可能,我想删除硬编码值GrandTotalGroup

SELECT SUG3.LineOrder AS SNo, 
       CASE WHEN (Visits IS NULL) 
            THEN (SELECT SUM(ISNULL(CTE3.Visits, 0)) 
                  FROM CTE3 
                  WHERE CTE3.GroupSetName = 'GrandTotalGroup') 
            ELSE ISNULL(Visits, 0) END AS Visits 
FROM  UDSStaffUtilizationGroups SUG3 
          LEFT OUTER JOIN CTE3 ON CTE3.UDSStaffGroupID = SUG3.UDSStaffGroupID
GROUP BY SUG3.LineOrder, SUG3.GroupSetName, SUG3.GroupTotalName, CTE3.Visits

有没有办法使用字符串函数来改变: GrandTotalGroupTotalGrandTotalGroup

4

2 回答 2

0
Create function Replace2ndOccurance(@str varchar(500),@strTrunc varchar(100))
returns varchar(500)
as
begin
Return Replace(STUFF(STUFF(@str,patindex('%'+@strTrunc+'%',@str),len  (@strTrunc), '-'),patindex('%'+@strTrunc+'%',STUFF(@str,patindex('%'+@strTrunc+'%',@str),len(@strTrunc), '-')),len(@strTrunc),''),'-',@strTrunc)    
end
select dbo.Replace2ndOccurance('GrandTotalGroupTotal','Total')
于 2017-02-03T05:28:02.100 回答
0

如果我理解正确

SELECT SUBSTRING('GrandTotalGroupTotal', 1, 15)  
于 2017-02-03T03:48:23.423 回答