sum()可以求和,
to_char(sysdate,'dd')-1  可以下條件是前一天的。
用多個語句就比較容易。用一個語句我也不太會了。

解决方案 »

  1.   

    SELECT a.N,a.Y,a.RQ,SUM(b.sl1),SUM(a.SL1),SUM(a.SL2)
    FROM yourtable a,(SELECT SL1
                      FROM yourtable c 
                      WHERE c.N = XXXX 
                        AND c.Y = XX) b
    WHERE a.N = XXXX
      AND a.Y = XX
      AND a.RQ = 你所说的的“本日”
      AND a.RQ - 1 = b.RQ(+)
    GROUP BY a.N,a.Y,a.RQ
      

  2.   

    如果考虑象1月1号,3月1号这样的日期,那可真够麻烦的....
    我觉得你应该是为了出月报吧,那么楼上的SQL就不能满足要求了。
      

  3.   

    Select A.SL1 Last_SL1,B.SL1,B.SL2 
    from (Select Trunc(RQ,'DD') RQ,Sum(SL1) SL1 
      from yourtable 
      Where Trunc(RQ+1,'MM')=月份 
      Group by Trunc(RQ,'DD')) A,
    (Select Trunc(RQ,'DD') RQ,Sum(SL1) SL1,Sum(SL2) SL2  
      from yourtable 
      Trunc(RQ+1,'MM')=月份 
      Group by Trunc(RQ,'DD')) B
    where A.RQ-1=B.RQ;为什么把条件放在 Trunc(RQ+1,'MM')=月份放在子查询中请评价。
      

  4.   

    sorry,我没有把问题说清楚,因为在表中可能会出现上一日没有记录,但向前推就有记录这样我要的应该是最近的一日sum(SL1),请各位大侠继续指教。多谢了!
      

  5.   

    你的目的是什么?
    如果年月和日期都是固定的:SELECT a.n,a.y,a.rq ,SUM(a.sl1),SUM(a.sl2),SUM(b.sl1)
    FROM yourtable a,
         (SELECT SUM(sl1) sl1 
          FROM yourtable 
          WHERE n = 你的年
            AND y = 你的月 
            AND rq = (SELECT MAX(rq) FROM yourtable WHERE rq < 你的日期)) b
    WHERE a.n = 你的年
      AND a.y = 你的月
      AND a.rq = 你的日期
    GROUP BY a.n,a.y,a.rqor:SELECT a.n,a.y,a.rq ,
           SUM(a.sl1),
           SUM(a.sl2),
           (SELECT SUM(sl1) 
            FROM yourtable 
            WHERE n = 你的年
              AND y = 你的月
              AND rq = (SELECT MAX(rq) FROM yourtable WHERE rq < 你的日期)) 最近的一日sum
    FROM yourtable a
    WHERE a.n = 你的年
      AND a.y = 你的月
      AND a.rq = 你的日期
    GROUP BY a.n,a.y,a.rq为什么要这样设计,年月和日期还要分开?