如何在sql中的列值中添加符号

时间:2014-01-03 04:56:04

标签: sql sql-server pivot

SELECT 
      Topics,
      [22] as Assgn1,
      [19] as Assgn2,
      [16],
      [17],
      [18],
      case  when  [17] = 0 or [17] IS null  then [18]*100 else (isnull([18],0) - [17])/[17]*100 end  AS PercentageImprove  

    from
    (
       SELECT 
         fltTotalMark as [TMark], 
         intAssessmentID as [assid] ,
         vchTopic as [Topics] 
       from ManageAssessment 
       WHERE intUserID=174 
    )AS S
    pivot
    (
      SUM(TMark)
      FOR assid IN ([22], [19], [16], [17], [18])
    )AS s

这是我生成表的sql代码, 表输出:

Topics                |Assgn1   |Assgn2     |   16  |   17  |PercentageImprove|
NULL                  |8    3|  NULL|   3   |   0   |-100
Numbers               |NULL NULL|   2   |NULL   |   2   |200
Numbers(Unitary Method)|    NULL|   NULL|   1   |   NULL    |0
Occupations (people)   |    NULL|   NULL|   NULL|   1   |   -100

这里PercentageImprove的百分比值我希望显示-100%,-100值显示为红色和null我想显示为 - ,所以任何人都帮我解决这个问题.. 谢谢..

1 个答案:

答案 0 :(得分:0)

在案例陈述结尾附加百分比符号。

CAST ( case when [17] = 0 or [17] IS null then [18]*100 else (isnull([18],0) - [17])/[17]*100 end AS VARCHAR) + '%' AS PercentageImprove

另外不要忘记将从CASE语句返回的整数值强制转换为varchar,否则sql server将尝试将整数添加到百分比符号并抛出错误。

就红色的着色值而言,这是在显示数据时在前端完成的。