【问题标题】:SQL inventory with history具有历史记录的 SQL 清单
【发布时间】:2013-11-13 13:31:08
【问题描述】:

好吧,我在创建查询以从包含以下数据的表中检索当前库存时遇到问题: ID、仓库、日期、库存

我想得到的是最新的股票变化日期的当前股票信息。

例如:

1, A, 2013-01-01, 1  
1, A, 2013-01-02, 2  
1, A, 2013-01-03, 4  
1, A, 2013-01-05, 1  
1, B, 2013-01-01, 1  
1, B, 2013-01-02, 2  
1, B, 2013-01-03, 4  
2, B, 2013-01-01, 1  
2, B, 2013-01-02, 2  
2, B, 2013-01-03, 4  

结果我想:

1, A, 2013-01-05, 1  
1, B, 2013-01-03, 4  
2, B, 2013-01-03, 4  

对于每个 ID,每个仓库的最后库存信息。

【问题讨论】:

    标签: sql inventory


    【解决方案1】:

    如果您拥有或将获得其他列,此版本仍然有效,而无需添加带有 TOP、排序等的新行 :)

    select *
    from TableName t1
    where t1.Date = 
          (select max(t2.Date) 
             from TableName t2
            where t2.Id = t1.id and t2.Warehouse = t1.WareHouse)
    

    【讨论】:

    • 您的解决方案有效。其他两个没有,可能是因为 Pervasive SQL 的特殊性。
    【解决方案2】:
    SELECT t1.ID, t1.Warehouse, t1.Date, Stock
    FROM TestTable t1
    JOIN
    (
        SELECT ID, Warehouse, MAX(Date) [Date]
        FROM TestTable
        GROUP BY ID, Warehouse
    ) t2 ON t1.ID = t2.ID
        AND t1.Warehouse = t2.Warehouse
        AND t1.Date = t2.Date
    ORDER BY ID, Warehouse
    

    【讨论】:

    • 你的表名不一致,即BarTestTable
    • 我的坏...早上:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多