hi 各位大大 
  这里碰到一个对于我而言的难题,希望大家如果可以的话帮助一下
  
首先我有1个表
 
表A:单号 价格一 价格二 价格三 价格四  总价
 
我要实现的功能是:一句COUNT(*) 语句 实现  
当单号<1000 的时候 总价=(价格一 + 价格二 + 价格三 + 价格四)*1.2当单号>=1000 的时候 总价=(价格一 + 价格二 + 价格三 + 价格四)*1.3需要在一句SELECT语句中实现,求解法。谢谢了!

解决方案 »

  1.   

    为啥要count(*)呢,没看出哪里要计算数目啊
      

  2.   

    Count命令可以計算滿足條件的記錄數量,與單價或總價關係不大。
      

  3.   

    update 表A set 总价 = (价格一+价格二+价格三+价格四)
    * (case
    when 单号<1000 then 1.2
    else 1.3
       end
       );不知道是不是这个意思
      

  4.   

    不太理解楼主所谓根据公式计算条数,是指计算什么条件的数目
    还是简单的写了下WITH t AS (
      SELECT 900 单号,1 价格一,2 价格二,3 价格三,4 价格四 FROM dual 
      UNION ALL 
      SELECT 1100 单号,1 价格一,2 价格二,3 价格三,4 价格四 FROM dual
    )
    SELECT t.*,CASE WHEN 单号<1000 THEN (价格一+价格二+价格三+价格四)*1.2 WHEN 单号>=1000 THEN (价格一+价格二+价格三+价格四)*1.3 END 总价
     FROM t;
      

  5.   


    --这里是不需要用到count()的,以下即可
    --测试表以及测试数据
    create table 表A
    (
     单号 number,
     价格一 number,
     价格二 number,
     价格三 number,
     价格四 number,
     总价 number
    )insert into 表A values(1001,50,20,30,100,null);
    insert into 表A values(888,50,20,30,100,null);--我的查询语句
    select
    单号,
    价格一,
    价格二,
    价格三,
    价格四,
    (case
    when 单号>=1000
    then (价格一 + 价格二 + 价格三 + 价格四)*1.3
    when 单号<1000
    then (价格一 + 价格二 + 价格三 + 价格四)*1.2
    end) as 总价
    from 表A
    --查询结果
    1001 50 20 30 100 260
    888 50 20 30 100 240
      

  6.   


    --你的这个需求不需要用到count函数的
    --以下是我的做法
    create table 表A
    (
     单号 number,
     价格一 number,
     价格二 number,
     价格三 number,
     价格四 number,
     总价 number
    )insert into 表A values(1001,50,20,30,100,null);
    insert into 表A values(888,50,20,30,100,null);--查询
    select
    单号,
    价格一,
    价格二,
    价格三,
    价格四,
    (case
    when 单号>=1000
    then (价格一 + 价格二 + 价格三 + 价格四)*1.3
    when 单号<1000
    then (价格一 + 价格二 + 价格三 + 价格四)*1.2
    end) as 总价
    from 表A
    --查询结果
    1001 50 20 30 100 260
    888 50 20 30 100 240
      

  7.   

    楼主把要的结果说一下吧。看了半天,还是没理解 count 在这里 做什么用。