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

提供另一种选择 - 使用该Abs()功能

返回指定数值表达式的绝对(正)值的数学函数。

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

此查询总是返回spare2小于 0:

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

usingcase语句,您可以在查询中操作值

于 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 回答