我简单的做一个数据吧 fyb
fyid  je
1     3.2
1     3.2
1     3.2
2     2.5
2     2.5
3     3.3
4     4.5
5     3.2我想要的是 可不可以 通过case when 判断fyid不重复就相加金额我想要的效果是
select sum(case when fyid不重复 then je end) from fyb

解决方案 »

  1.   

    select fyid,sum(je) from fyb group by fyid
    啥叫不重复就相加?
      

  2.   

    select distinct * from fyb 
      

  3.   

    结果是 3.2+2.5+3.3+4.5+3.2 就是相加 因为我的group by 语句是不放fyid的 所以要在case when 里面判断fyid不重复然后 金额相加
      

  4.   

    select fyid,sum(je) from (select distinct * from fyb) a
      

  5.   

    ;with cte as (
      select fyid,row_number() over (PARTITION BY  fyid order by getdate()) as id,je
      from fyd
     )
    select sum(je) from cte
    where id = 1
      

  6.   

    船长 用distinct 这么简单 我还用问么
      

  7.   

    如果数据fyid je
    1 3.2
    1 3.2
    1 3.2
    2 3.5
    2 1.5
    3 3.3
    4 4.5
    5 3.2
      

  8.   

    这个 能在case when 里面写条件么??是统计来的 
      

  9.   

    select sum(je) from (select distinct * from tb) t
      

  10.   

    create table fyb(fyid int,je decimal(8,1))
    insert into fyb select 1,3.2
    insert into fyb select 1,3.2
    insert into fyb select 1,3.2
    insert into fyb select 2,2.5
    insert into fyb select 2,2.5
    insert into fyb select 3,3.3
    insert into fyb select 4,4.5
    insert into fyb select 5,3.2
    go
    select sum(je)je from fyb a where exists(select 1 from fyb where fyid=a.fyid group by fyid having count(*)=1)
    /*
    je
    ---------------------------------------
    11.0(1 行受影响)*/
    go
    drop table fyb
      

  11.   

    select sum(je) from tb group by fyid,je
      

  12.   

    create table fyb(fyid int,je decimal(8,1))
    insert into fyb select 1,3.2
    insert into fyb select 1,3.2
    insert into fyb select 1,3.2
    insert into fyb select 2,2.5
    insert into fyb select 2,2.5
    insert into fyb select 3,3.3
    insert into fyb select 4,4.5
    insert into fyb select 5,3.2
    go
    select sum(je)je from(
    select distinct fyid,je from fyb
    )t
    /*
    je
    ---------------------------------------
    16.7(1 行受影响)
    */
    go
    drop table fyb
      

  13.   

    select sum(je) from tb group by fyid,je 
      

  14.   

    把你原来实现的+你客户新要的+你自己想发要的一起说。
    不要限定我一定要case when ,我不会,呵呵
      

  15.   

    。我够清楚了吧 我需要的是 case when 里的条件呢
      

  16.   

    select sum(je) from (select sum(je) as je from tb group by fyid,je) as t
    这个行不行?
      

  17.   

    不知道LZ的表多少数据量?如果表中重复很多,建议可以在fyid上建聚集索引,用了case when 效率也不一定好!~