2016-09-09 9 views
0

おはようございますMySQLの合計と更新

私はMySQLテーブルを持っており、このように見えます。

表:

+--------------+-----------+---------+---------+-------+ 
| DateReceived | ItemCode | QtyPack | QtyStan | PCS | 
+--------------+-----------+---------+---------+-------+ 
| 2016-09-09 | DRY000004 | 30.00 | 0.00 | 24.00 | 
| 2016-09-09 | DRY000007 | 60.00 | 0.00 | 12.00 | 
| 2016-09-09 | DRY000010 | 90.00 | 0.00 | 1.00 | 
| 2016-09-09 | DRY000011 | 100.00 | 0.00 | 1.00 | 
| 2016-09-09 | DRY000012 | 1.00 | 0.00 | 12.00 | 
| 2016-09-09 | DRY000012 | 1.00 | 0.00 | 12.00 | 
+--------------+-----------+---------+---------+-------+ 

と表の差異

+-----------+-----------+ 
| ItemCode | Receiving | 
+-----------+-----------+ 
| DRY000004 |  NULL | 
| DRY000007 |  NULL | 
| DRY000010 |  NULL | 
| DRY000011 |  NULL | 
| DRY000012 |  NULL | 
| DRY000013 |  NULL | 
| DRY000014 |  NULL | 
| DRY000016 |  NULL | 
| DRY000017 |  NULL | 
| DRY000018 |  NULL | 
| DRY000019 |  NULL | 
| DRY000020 |  NULL | 
| DRY000021 |  NULL | 
| EQU000001 |  NULL | 
+-----------+-----------+ 

ここに私の目標は、表の列Receivingでそれを転送する前にQtyPack * PCS + QtyStanの合計を取得することでの受信:Varianceとここに私のコードはあります

句の条件を無視していますが厥にしたい場合してくださいでも、コードが動作しているTable:Receiving

に私の他の基準である同じItemCodeを持っており、それはDRY000012である私が受け取ることにデータを持っている何かが間違っているようです1

QtyPackとここにショートストーリーをカットするために、私の質問は

でどのように私は表Varianceにそれを転送する前に、すべてのItemCodeを合計することができますか?たとえば、DRY000012は、受信時に転送する前に24になる必要があります。

将来の助けをTYSM

答えて

0
UPDATE Variance t1 
INNER JOIN 
(
    SELECT ItemCode, 
      Status, 
      DateReceived, 
      REPLACE(QtyPack, ',', '') * REPLACE(PCS, ',', '') + 
      REPLACE(QtyStan, ',', '') AS amount 
    FROM Receiving 
) t2 
    ON t1.ItemCode = t2.ItemCode 
SET t1.Receiving = t2.amount 
WHERE t2.Status = 'Posted' AND 
     t2.DateReceived BETWEEN '2016-09-09' AND '2016-09-09' 

これはItemCodeのみReceivingテーブルに一度表示され、我々はUPDATEを行う前に集合の任意の並べ替えを必要としないことと仮定します。

+0

TYSMのヘルプですが、私はいくつかの変更を行いました –

+1

本当に素晴らしいヘルプ、承認済み –

関連する問題