0

おはようございます、

以下のコードは、問題の日付と従業員グループに対してデータ ソースが持つ calloffered 番号のちょうど 2 倍を返しています。ここで何が間違っていますか?


USE CMT
GO

DECLARE @rd int

SET @rd='41426'

SELECT [date]
  ,skillGroup 
  ,interval/48.000 interval
  ,sum(callsoffered)callsoffered
  ,sum(handleTime) /CAST(NULLIF(sum(acdcalls),0) as decimal(6,0))CRT
  ,(sum(acceptable) /cast(NULLIF(sum(callsoffered),0) as decimal(6,0))) SL   
FROM vwForGrpISplit
WHERE [date] IN(@rd)
AND skillGroup IN ('AC English','AC Spanish','Consumer Credit','WLNP','CC Gen','CC 
Spanish','Retention','Spanish Retention','Device Gen','RSL','FC Gen','FC   Spanish','HBRM English','HBRM Spanish','Technical Care','STC','Tech Care Spanish','Prepaid English','Prepaid Spanish','Sub prime Tech')
GROUP BY [date], skillGroup, interval
ORDER BY skillGroup,[date], interval

コードはエラーなしで実行されますが、クエリのこの部分で参照されるメトリックに対して正しくない値を返します。

,sum(callsoffered)callsoffered

結果は 27 になるはずですが、代わりに 54 が得られます。数式のこの部分が取得する他のすべてのデータについても同じことが言えます。

これらの式はどちらも正しい値を引き出します。

  ,sum(handleTime) /CAST(NULLIF(sum(acdcalls),0) as decimal(6,0))CRT

  ,(sum(acceptable) /cast(NULLIF(sum(callsoffered),0) as decimal(6,0))) SL 

シンプルなものだとおもいます。誰かがこれで私を助けてくれますか?

ありがとう

4

0 に答える 0