我需要显示每月的库存数据

时间:2010-10-28 15:45:52

标签: sql sql-server sql-server-2005 tsql sql-server-2008

我有一个表格,如清单详细信息,如下所示。

InventoryTable。

InventoryTableID  DateCreated  quantity  ItemName
-------------------------------------------------
1                 2010-02-04   12        abc
2                 2010-03-10   4         abc
3                 2010-03-13   5         xyz
4                 2010-03-13   19        def
5                 2010-03-17   15        abc
6                 2010-03-29   15        abc
7                 2010-04-01   22        xyz
8                 2010-04-13   5         abc
9                 2010-04-15   6         def    
如果我的管理员想知道2010年4月(即2010年4月1日 - 2010年4月30日)的库存明细,请从上表中

我需要输出如下所示。

  1. 库存 2010年4月1日

    ItemName  Datecreated   qty
    ----------------------------
    abc       2010-03-29    15
    xyz       2010-04-01    22
    def       2010-03-13    19
    
  2. 库存 2010年4月30日

    ItemName  Datecreated  qty
    ---------------------------
    abc       2010-04-13   5
    xyz       2010-04-01   22
    def       2010-04-15   6
    

1 个答案:

答案 0 :(得分:3)

对于您的第一个结果集,请使用@YourDataParam ='2010-04-01'运行。对于第二组,请使用“2010-04-30”。

;with cteMaxDate as (
    select it.ItemName, max(it.DateCreated) as MaxDate
        from InventoryTable it
        where it.DateCreated <= @YourDataParam
        group by it.ItemName
)
select it.ItemName, it.DateCreated, it.qty
    from cteMaxDate c
        inner join InventoryTable it
            on c.ItemName = it.ItemName
                and c.MaxDate = it.DateCreated