У меня есть таблица sql
+------+-----------+-----------+--------+--------------+
| rowID| location | fk_Item_ID |Balance |Inventory_Date|
+------+-----------+-----------+--------+--------------+
| 1 | 1 | p1 |500 |2019-01-10 |
| 2 | 1 | p2 |450 |2019-01-05 |
| 3 | 2 | p2 |500 |2019-01-10 |
| 4 | 1 | p1 |300 |2019-01-15 |
| 5 | 1 | p1 |350 |2019-01-16 |
+------+-----------+-----------+--------+--------------+
Я пытаюсь написать оператор SQL или, предпочтительно, LINQ, чтобы получить самую последнюю строку по дате, а затем максимальное число строк для каждой детали в каждом месте
SELECT * FROM Inventory_Log AS l1
WHERE
rowID IN (
SELECT MAX(rowID) FROM Inventory_Log
WHERE
fk_Item_ID = l1.fk_Item_ID
AND Inventory_Date = (
SELECT MAX(Inventory_Date)
FROM Inventory_Log
WHERE fk_Item_ID = l1.fk_Item_ID
)
)
ORDER by l1.fk_Item_ID
Ожидаемые результаты:
+------+-----------+-----------+--------+--------------+
| rowID| location | fk_Item_ID |Balance |Inventory_Date|
+------+-----------+-----------+--------+--------------+
| 2 | 1 | p2 |450 |2019-01-05 |
| 3 | 2 | p2 |500 |2019-01-10 |
| 5 | 1 | p1 |350 |2019-01-16 |
+------+-----------+-----------+--------+--------------+
Я не уверен, как включить несколько мест для одной и той же детали.
Это поместит в следующий класс
public class _ItemLocations
{
public string Item_ID { get; set; }
public string Location { get; set; }
public decimal Qty { get; set; }
}
Я еще не пробовал в LINQ, потому что я работаю, делаю покупки в sql