2017-09-11 124 views
-1

我有一個庫存盤點表,並且需要從每個位置對每個項目進行彙總。 所以計數表是一個基本上日誌計數Summing混合記錄MySQL

+-----------+---------+---------+-------------+---------------------+ 
| record_id | item_id | count | location_id | time_stamp   | 
+-----------+---------+---------+-------------+---------------------+ 
|   1 |  129 | 3.00 |   1 | 2017-08-23 16:56:05 | 
|   2 |  129 | 14.00 |   2 | 2017-08-23 16:57:28 | 
|   3 |  129 | 4.00 |   1 | 2017-08-31 16:59:39 | 
|   4 |  129 | 14.00 |   2 | 2017-08-31 17:01:27 | 
|   5 |  133 | 4.00 |   1 | 2017-08-23 17:02:21 | 
|   6 |  133 | 0.00 |   2 | 2017-08-23 17:03:22 | 
|   7 |  133 | 8.00 |   3 | 2017-08-23 17:03:55 | 
|   8 |  133 | 4.00 |   1 | 2017-08-26 17:04:22 | 
|   9 |  133 | 1.00 |   2 | 2017-08-26 17:05:08 | 
|  10 |  133 | 9.00 |   3 | 2017-08-26 17:05:44 | 
+-----------+---------+---------+-------------+---------------------+ 

所以項目129具有總共18這是第一次計數上8/23的,但在8/31更近的計數示出了4中的位置1和14在地點2.所以我需要的是根據最近的計數,所有地點的每個項目的總數(總和)。任何幫助表示讚賞。

+0

呃,期望的結果是什麼樣子?並參見https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-查詢 – Strawberry

+0

非常簡單,只是item_id和總計數加總每個位置的最新計數 –

回答

0

解決方案與相關子查詢:

SELECT t1.item_id, SUM(t1.count) 
FROM Table1 t1 
WHERE t1.time_stamp = 
     (SELECT MAX(t11.time_stamp) 
     FROM Table1 t11 
     WHERE t1.item_id=t11.item_id AND t1.location_id=t11.location_id) 
GROUP BY t1.item_id 

Fiddle

+0

到達那裏,但這並沒有考慮到任何物品可能有多個位置。所以我需要位置1的最新計數,添加到位置2的最新計數等。 –

+0

修復了查詢並添加了小提琴(演示)。 –

1

不知道這是否是你想要的或沒有,你應該張貼您的預計結果在OP,那麼我們可以給你什麼你完全需要。

你可以試試下面的SQL:

select 
    t1.`item_id`, 
    sum(t1.`count`) sum_count 
from yourtable t1 
inner join (
    select `item_id`, `location_id`, max(`time_stamp`) `time_stamp` 
    from yourtable 
    group by `item_id`, `location_id` 
) t2 
on t1.`item_id` = t2.`item_id` 
and t1.`location_id` = t2.`location_id` 
and t1.`time_stamp` = t2.`time_stamp` 
group by t1.`item_id` 

而看到DEMO在SQLFiddle。

+0

我不知道這是不是想要的,但它確實提供了一些在問題中沒有的努力 – Strawberry