2017-02-03 10 views
0

CASE式を含むSELECTクエリがあります。 私はテキスト 'GrandTotalGroupTotal'で '合計'列を持っています。 「GrandTotalGroup」というテキストの2番目の列があります。 'GrandTotalGroup'列の行を合計し、 'GrandTotalGroupTotal'行を入れるには、以下に示すようにCASE文の正しい行を特定します。SQL Serverの文字列の2番目の部分文字列を切り捨てます

最後の '合計'を列の値から切り捨てる必要があります。 この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

私が正しく

SELECT SUBSTRING('GrandTotalGroupTotal', 1, 15) 
+0

を理解している場合これは動作しますが、そうではありません十分に一般的です。 –

0
Create function Replace2ndOccurance(@str varchar(500),@strTrunc varchar(100)) 
returns varchar(500) 
as 
begin 
Return Replace(STUFF(STUFF(@str,patindex('%'[email protected]+'%',@str),len (@strTrunc), '-'),patindex('%'[email protected]+'%',STUFF(@str,patindex('%'[email protected]+'%',@str),len(@strTrunc), '-')),len(@strTrunc),''),'-',@strTrunc)  
end 
select dbo.Replace2ndOccurance('GrandTotalGroupTotal','Total') 
+0

ありがとうございます。私はこれを試してみる。 –

関連する問題