bugfix> mysql > 投稿

私はコードが同じであるすべての値を合計するための助けが必要です、これは私のデータです

OFFICECODE | DATE | VAL
10200 | 2018-05-01 | 1
10200 | 2018-05-02 | 2
10100 | 2018-05-01 | 3
10100 | 2018-05-02 | 2

この結果を取得したい

OFFICECODE | DATE | SUM(VAL) 
10200 | 2018-05-01 | 1
10200 | 2018-05-02 | 3 (1+2)
10100 | 2018-05-01 | 3
10100 | 2018-05-02 | 5 (3+2)

私はこのクエリを試しますが、結果はすべてOFFICECODEを合計します

SELECT
      A.OFFICELKD,
      A.DATE,
      A.VAL,
      @VAL := @VAL + A.VAL AS `VALSUM`
   FROM 
      ( SELECT
              cur.OFFICELKD,
              cur.DATE,
              cur.VAL
           FROM
              tblReport cur
           LEFT JOIN 
          tblReport pre
       ON cur.OFFICECODE = pre.OFFICECODE
       GROUP BY cur.ID
           ORDER BY
              OFFICECODE ) AS A,
      ( SELECT @VAL := 0 ) AS SqlA
   ORDER BY OFFICECODE, DATE

これを修正するのを手伝ってください

回答 1 件
  • あなたは近いです。あなたは OFFICECODE を取る必要があります  考慮に入れる:

    SELECT r.*,
           (@val := if(@o = r.OFFICECODE, @val + a.val,
                       if(@o := r.OFFICECODE, a.val, a.val)
                      )
           ) as valsum
    FROM (SELECT r.*
          FROM tblReport r 
          ORDER BY OFFICECODE, DATE
         ) r CROSS JOIN
         ( SELECT @o := -1, @VAL := 0 ) params;
    
    

あなたの答え