[英]SQL - Take Corresponding Value Where MIN(Date)
I have a dataset with warehouse locations, dates, and inventory levels for given warehouse at a given date. 我有一个数据集,其中包含给定日期的给定仓库的仓库位置,日期和库存水平。
How do I structure a SQL query where I end up with a list of distinct locations and their inventory levels at the earliest date per warehouse? 如何构造SQL查询,在每个仓库最早的日期结束时,我会列出一系列不同的位置及其库存水平? I'm thinking something like...
我在想...
SELECT warehouse_id, (inventory_amt where min(date) is TRUE) as inventory SELECT Warehouse_id,(inventory_amt,其中min(date)为TRUE)作为库存
FROM inventory_table 来自库存表
GROUP BY warehouse_id GROUP BY Warehouse_id
I like using row_number()
and top (1) with ties
for this: 我喜欢为此使用
row_number()
和top (1) with ties
:
SELECT TOP (1) WITH TIES it.*
FROM inventory_table it
ORDER BY ROW_NUMBER() OVER (PARTITION BY warehouse_id ORDER BY date DESC);
You can also express this as: 您也可以这样表示:
select it.*
from inventory_table it
where it.date = (select max(it2.date)
from inventory_table it2
where it2.warehouse_id = it.warehouse_id
);
try something like this 尝试这样的事情
select warehouse_id,....
from inventory_table t1
inner join (
select warehouse_id, min(date) from inventory_table group py warehouse_id
) min
on t1.warehouse_id=min.warehouse_id
This worked for me: 这为我工作:
proc sql;
CREATE TABLE inventory_by_warehouse AS
SELECT
a.warehouse_id
,a.inventory_amt
FROM inventory_table as a
WHERE a.date =
(SELECT min(date)
FROM inventory_table
WHERE warehouse_id = a.warehouse_id);
quit;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.