是这样的,我数据库内有一张表,字段是,费用名称,币制名称,结算状态(只有两个值1为结算0为未结算),费用类型(有两个值1为应收费用,0为应付费用),金额,我需要做的是根据查询条件查出,已付金额,已收金额,币制名称,和利润,利润是已收减已付,(已收就是已结算),求高手解答,昨晚加了个通宵和今天一上午,就弄这个,求求各位了

解决方案 »

  1.   


    --try
    SELECT 币制名称,已付金额=SUM(case when 费用类型=0 and 结算状态=1 then 金额 else 0 end)
                   ,已收金额=SUM(case when 费用类型=1 and 结算状态=1 then 金额 else 0 end) 
                   ,利润=SUM(case when 费用类型=0 and 结算状态=1 then 金额 else 0 end)-SUM(case when 费用类型=1 and 结算状态=1 then 金额 else 0 end) 
                   from [tablename] 
                   group by 币制名称
      

  2.   


    不好意思,解决了
    ,怎么才能实现 按条件 查询 啊,就是 有 两张表,一张是 主表A,一张就是 费用 这张表B,
    A的id和B的id关联,我需要查出A表的ID,Name,Con,和B表的,币制名称,应收金额,应付金额,利润,
    在 帮我一次 谢拉
      

  3.   


    不好意思,解决了
    ,怎么才能实现 按条件 查询 啊,就是 有 两张表,一张是 主表A,一张就是 费用 这张表B,
    A的id和B的id关联,我需要查出A表的ID,Name,Con,和B表的,币制名称,应收金额,应付金额,利润,
    在 帮我一次 谢拉给出结构,数据和要求的结果吧。
      

  4.   

    with cte as
    (
    SELECT id,币制名称
    ,已付金额=SUM(case when 费用类型=0 and 结算状态=1 then 金额 else 0 end)               
    ,已收金额=SUM(case when 费用类型=1 and 结算状态=1 then 金额 else 0 end)                
    ,利润=SUM(case when 费用类型=0 and 结算状态=1 then 金额 else 0 end)-SUM(case when 费用类型=1 and 结算状态=1 then 金额 else 0 end)                
    from B                
    group by 币制名称
    )
    select a.ID,Name,Con,b.币制名称,应收金额,应付金额,利润
    from
    A inner join B on a.id=b.id