表:
t_fy房间(fjh)   费用名称(fymc)   月份(yf)   本月费用(byfy) 本月结余(byjy)
A101            电费          200605        100             0.12
A102            水费          200605        200             0.23
A101            电费          200606        100             0.12
A102            水费          200606        200             0.23
A101            电费          200607        210              0
A102            水费          200607        230              0请问如何得到这样的数据:房间   费用名称   月份   本月费用 本月结余     
A101    电费      200607  210      0.12
A102    水费      200607  230      0.23即把200605和200606月份的本月结余显示到200607的月份上。注意:是用一句sql语句实现。谢谢

解决方案 »

  1.   

    select fjh,max(fymc),max(yf),max(byfy),max(byjy) from t_fy  group by fjh order by fjh
      

  2.   

    SELECT fjh,
           fymc,
           yf,
           byfy,
           Total_byjy=ISNULL((SELECT SUM(byjy)
                              FROM t_fy AS tmp
                              WHERE tmp.yf <= t_fy.yf
                                    AND
                                    tmp.fymc = t_fy.fymc),0)
    FROM t_fy
    WHERE yf = '200607'
    如果不包含7月份就把 <= 改成 <
      

  3.   

    select fjh,max(fymc),max(yf),max(byfy),sum(byjy) from t_fy  group by fjh order by fjh
      

  4.   

    --建表CREATE TABLE [dbo].[t_fy] (
    [房间] [varchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [费用名称] [varchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [月份] [varchar] (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [本月费用] [numeric](18, 2) NOT NULL ,
    [本月结余] [numeric](18, 2) NOT NULL 
    ) ON [PRIMARY]--模拟数据
    INSERT t_fy  SELECT 'A101','电费','200605',100,0.12
    UNION  ALL        SELECT 'A102','水费','200605',200,0.23
    UNION  ALL        SELECT 'A101','电费','200606',100,0.12
    UNION  ALL        SELECT 'A102','水费','200606',200,0.23
    UNION  ALL        SELECT 'A101','电费','200607',210,0
    UNION  ALL        SELECT 'A102','水费','200607',230,0--查询
    select DISTINCT 房间,费用名称,月份,本月费用,
    本月结余=(select sum(本月结余) from t_fy  b where a.房间=b.房间 and (b.月份='200606' or b.月份='200605'))
    from t_fy a
    where 月份='200607'