在SQL

时间:2019-03-10 08:53:13

标签: sql sql-server database

我必须自定义查询的特定列值。我有四种类型的案例,例如

  empcode AbsentDays
  1       0.00
  6       0.50
  2       1.00
  3       1.50
  4       2.00
  5       2.50

我的预期输出将是

  1       0
  6       0.5
  2       1
  3       1.5
  4       2
  5       2.5

为此,我尝试了以下内容

AbsentDays = case 
                when AbsentDays = 0.00 
                   then convert(int, AbsentDays) 
                when AbsentDays >= 1.00 
                   then convert(decimal(10, 1), AbsentDays)
                -- when AbsentDays = 0.50 
                --    then 0.5
            end

但是使用此方法我无法获得想要的结果,它覆盖了其他值。

3 个答案:

答案 0 :(得分:2)

一列只能有一个数据类型。为了以您描述的方式查看不同的情况,您必须使用p <- ggplot(data = plot.data, aes(x = X, y = Y, color = Species)) + geom_point() + scale_color_brewer(palette = "Set2") + theme_bw() p / varchar数据类型:

nvarchar

答案 1 :(得分:0)

您可以通过将其强制转换为float来实现,因为小数点后的最右边的零在float中被修剪:

select empcode, cast(AbsentDays as float)
from tbl

答案 2 :(得分:0)

不要转换为浮点数,您会失去精度。

SELECT FORMAT(CAST(2.0 AS DECIMAL(9,6)), 'g15') -- will print 2
SELECT FORMAT(CAST(0.50 AS DECIMAL(9,6)), 'g15') -- will print 0.5