I am trying to get the last prices each customer paid for each product on mysql. the following sql is not giving me the right data. the max(dateLasFullfillment) doesn't much the row value and its not even the max vsalue. its like the group by works before the max.
select
'item' AS type, soitem.productnum as 'SKU',
(soitem.unitprice / right(uom.code, length(uom.code) - 2)) as unitPrice,
replace(customer.name, "#", "") AS priceList,
max(soitem.dateLastFulfillment)
from
soitem
left join
so ON so.id = soitem.soid
left join
customer on so.customerid = customer.id
left join
product on product.num = soitem.productnum
left join
uom on product.uomid = uom.id
where
soitem.dateLastFulfillment > now() - interval 6 month
and soitem.unitprice > 0
and so.statusid in (20, 25, 60)
group by
soitem.productnum, customer.name
order by
PriceList
Here are some Tables samples with expected results. the sql must start with select statement, no declare etc unless there is no other option.
SO Table:
id billToName customerid dateCompleted dateCreated dateIssued num
1 Name1 1 6/27/18 6/23/18 6/23/18 ordernum1
2 Name1 1 7/15/18 7/10/18 7/10/18 ordernum2
3 Name1 1 7/29/18 7/20/18 7/20/18 ordernum3
4 Name2 2 6/31/2018 6/30/18 6/30/18 ordernum4
5 Name2 2 7/27/18 7/26/18 7/26/18 ordernum5
6 Name3 3 8/8/18 8/5/18 8/5/18 ordernum6
7 Name3 3 7/25/18 7/20/18 7/20/18 ordernum7
SOITEM table:
id soId unitPrice dateLastFulfillment productId productNum statusId uomId qtyOrdered
1 1 10 6/27/18 1 SKU-1 50 11 3
2 1 20 6/27/18 2 SKU-2 50 12 5
3 1 30 6/27/18 3 SKU-3 50 13 6
4 2 11 7/15/18 1 SKU-1 50 11 11
5 2 21 7/15/18 2 SKU-2 50 12 44
6 2 31 7/15/18 3 SKU-3 50 13 5
7 3 12 7/29/18 1 SKU-1 50 11 5
8 3 22 7/29/18 2 SKU-2 50 12 6
9 4 23 6/31/2018 2 SKU-2 50 12 9
10 4 33 6/31/2018 3 SKU-3 50 13 12
11 5 24 7/27/18 2 SKU-2 50 12 14
12 5 34 7/27/18 3 SKU-3 50 13 35
13 6 25 8/8/18 2 SKU-2 50 12 22
14 6 35 8/8/18 3 SKU-3 50 13 55
15 7 26 7/25/18 2 SKU-2 50 12 22
16 7 36 7/25/18 3 SKU-3 50 13 11
PRODUCT table:
num uomid
SKU-1 11
SKU-2 12
SKU-3 13
UOM table:
id code
11 cs10
12 cs20
13 cs30
CUSTOMER table:
ID NAME
1 CUSTOMER1#
2 CUSTOMER2#
3 CUSTOMER3#
EXPECTED RESULTS:
type SKU unitPrice priceList max(soitem.dateLastFulfillment)
item SKU-1 1.2 customer1 7/29/18
item SKU-2 1.1 customer1 7/29/18
item SKU-3 1.03 customer1 7/15/18
item SKU-2 1.2 customer2 7/27/18
item SKU-3 1.13 customer2 7/27/18
item SKU-2 1.25 customer3 8/8/18
item SKU-3 1.17 customer3 8/8/18