0

ある会社のデータ使用量を確認するクエリを実行していたところ、問題が発生しました。最終状態での KB 使用量が必要以上に多いことに気付きました。払い戻しスクリプトが正しく機能していません。

問題を診断したところ、スペア 1 (返金) に「-800」以外の値があり、場合によっては > 0 の値があり、これは問題であり、返金は常にマイナスでなければならないためです。

どうすればそれを実装できますか? これを書きましたが、続行する方法がわかりません:

SELECT callclass,redirectingnumber,spare1,spare2
  FROM [CDR_Week_43].[dbo].[CDR-2013-10-20]
where 1=1
and mvno_id = 7
and callclass = 29
if [spare1] = 'Refund' and [spare2] > 0
then 

Spare1 では「refund」文字列を取得し、spare2 では値を取得します。私がやりたいのは、値が 0 より大きい場合、たとえば 300 の場合、-300 などと表示されることです。

4

3 に答える 3

0

このクエリは常にspare20 未満を返します。

SELECT callclass,redirectingnumber,spare1,
       case when spare2 > 0 then spare2 * -1 else spare2 end as spare2
FROM [CDR_Week_43].[dbo].[CDR-2013-10-20]
where mvno_id = 7 and callclass = 29

ステートメントを使用caseして、クエリの値を操作できます

于 2013-10-23T08:16:34.257 に答える
0
SELECT 
    CALLCLASS
    , REDIRECTINGNUMBER
    , SPARE1
    , CASE SPARE2 > 0 THEN SPARE2*-1 ELSE SPARE2 END AS SPARE2
FROM
    [CDR_Week_43].[dbo].[CDR-2013-10-20]
WHERE 
    1=1
    AND mvno_id = 7
    AND callclass = 29
于 2013-10-23T08:17:38.603 に答える
0

別のオプションを提供するには -Abs()関数を使用します

指定された数値式の絶対 (正) 値を返す数学関数。

SELECT ...
     , Abs(spare2) * -1 As spare2
       ...
于 2013-10-23T08:24:06.233 に答える