Оба других ответа выполняют то, что вы хотите.
Функцию pivot
можно использовать для упорядочивания данных в таблице nice
df.groupby(['Fruit','Name'],as_index = False).sum().pivot('Fruit','Name').fillna(0)
Name Bob Mike Steve Tom Tony
Fruit
Apples 16.0 9.0 10.0 0.0 0.0
Grapes 35.0 0.0 0.0 87.0 15.0
Oranges 67.0 57.0 0.0 15.0 1.0
Это прекрасно работает для меня.
SELECT s2.*, s1.Total
FROM Stores s1
LEFT JOIN Stores s2 on s1.Store = s2.Store
AND DATEDIFF(day, s2.Date, s1.Date) = -1
WHERE s2.Total IS NOT NULL
ORDER BY s1.Date, s1.Store
Вы можете использовать 2-й максимальный идентификатор как, но нулевые данные вы не можете избежать лучше, вы просто игнорируете данные при извлечении / отображении:
SELECT tbl2.Date, tbl2.Store, tbl2.total,
(select total from test_table tbl1 where tbl1.Store = tbl2.Store and tbl1.id < tbl2.id) as prev_Total
FROM `test_table` tbl2
Результат:
Date | Store | total | prev_Total |
--------------------------------------------
2019-03-21 | ABC | 56.98 | NULL |
--------------------------------------------
2019-03-21 | DEF | 60.34 | NULL |
--------------------------------------------
2019-03-21 | XYZ | 46.50 | NULL |
--------------------------------------------
2019-03-21 | ABC | 80.43 | 56.98 |
--------------------------------------------
2019-03-21 | DEF | 70.09 | 60.34 |
--------------------------------------------