我有一个包含SELECT
表达式的CASE
查询。
我有一个' Total'带有文字的栏目' GrandTotalGroupTotal'。
第二列包含文字' GrandTotalGroup'。
要汇总列中的行' GrandTotalGroup'并把行,' GrandTotalGroupTotal'我在CASE语句中标识了正确的行,如下所示。
我需要截断最后一个' Total'从列值。 此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
有没有办法使用字符串函数进行更改: GrandTotalGroupTotal 至 GrandTotalGroup
答案 0 :(得分:0)
如果我理解正确
SELECT SUBSTRING('GrandTotalGroupTotal', 1, 15)
答案 1 :(得分: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')