select case when a*1.0/b>0.5 then 1 else 0 end from orderlist  group by code

解决方案 »

  1.   

    select case when convert(decimal,a)/convert(decimal,b)>0.5 then 1 else 0 end from orderlist group by code
      

  2.   

    因a、b都是整形,a/b结果自动转成整形,当a<b时结果等于0,所以要先把a转成decimal型。
    同意楼上兄。
      

  3.   

    看看帮助
    /(除)
    用一个数除以另一个数(算术除法运算符)。语法
    dividend / divisor参数
    dividend是要被除的数字表达式。dividend 可以是数字数据类型分类中的任何数据类型(datetime 或 smalldatetime 数据类型除外)的任何有效 Microsoft&reg; SQL Server&#8482; 表达式。divisor除数的数字表达式。divisor 可以是具有数字数据类型分类中任何数据类型(datetime 和 smalldatetime 数据类型除外)的任何有效 SQL Server 表达式。结果类型
    返回优先级较高的参数的数据类型。有关数据类型优先级的更多信息,请参见数据类型的优先顺序。 如果用一个整型的 divisor 去除整型的 dividend,其结果是一个整数,小数部分被截断。注释
    由 / 运算符返回的实际值是用第一个表达式除以第二个表达式所得的商。
      

  4.   

    select case when a*1.0/b>0.5 then 1 else 0 end from orderlist  group by code
      

  5.   

    Create Table TEST(a int,b int)
    INSERT INTO TEST SELECT 3,2
    INSERT INTO TEST SELECT 2,2
    INSERT INTO TEST SELECT 1,2
    INSERT INTO TEST SELECT 4,2
    SELECT * FROM TEST
    select
     case 
       when CAST(a AS Decimal(9,3))/CAST(b AS decimal(9,3))>0.5 then 1 else 0 end from TEST
    Drop Table TESTa           b           
    ----------- ----------- 
    3           2
    2           2
    1           2
    4           2(所影响的行数为 4 行)            
    ----------- 
    1
    1
    0
    1
      

  6.   

    谢谢!那个问题已经搞定.
      还有一问题请教.
      orderlist(code,a,b, amount,)select sum(amount) as 总数量 from orderlist 
    select sum(amount) as 每个的总数量 from orderlist group by code 我想要的结果:
    select 总数量 ,每个的总数量 from ......
    不知如何将上面两个语句综合起来,还是有别的写法.