在Sql Server 2008 R2中过滤库存手头列表

时间:2014-11-14 00:58:00

标签: sql

我手头上有一个POS sql数据库库存,我正在努力工作。

SELECT TOP 1000 [ID]
  ,[Style/Colour/Size ID]
  ,[Branch ID]
  ,[Date]
  ,[Start]
  ,[Quantity]
  ,[tc ho/bo delete flag]
FROM [Counter Intelligence Office].[dbo].[Stock On Hand]

从这张表中我试图获得每个分支的当前库存(通过[样式/颜色/尺寸ID])。看起来很简单,但是我遇到的困难是桌子使用日期字段存储历史记录信息,直到每个项目的开始时间。因此,每个[分支ID]在[日期]的不同[样式/颜色/尺寸ID]中有多个[数量]实例。 我需要的是一个脚本,将查询缩小到只返回[分支ID]

中每个[样式/颜色/尺寸ID]的最新[日期]实例

希望我已经解释得这么好了!非常感谢任何帮助

谢谢, 出温

1 个答案:

答案 0 :(得分:0)

也许这就是你想要的东西?

SELECT  
    SOH.[ID],
    SOH.[Style/Colour/Size ID],
    SOH.[Branch ID],
    SOH.[Date],
    SOH.[Start],
    SOH.[Quantity],
    SOH.[tc ho/bo delete flag]
FROM [Counter Intelligence Office].[dbo].[Stock On Hand] SOH
INNER JOIN (
    SELECT 
       [Style/Colour/Size ID],
       [Branch ID],
       MAX([Date]) AS max_date 
    FROM [Counter Intelligence Office].[dbo].[Stock On Hand] 
    GROUP BY [Style/Colour/Size ID], [Branch ID]
) MAX_DATES 
     ON SOH.[Branch ID] = MAX_DATES.[Branch ID] 
    AND SOH.[Style/Colour/Size ID] = MAX_DATES.[Style/Colour/Size ID]
    AND SOH.[Date] = MAX_DATES.max_date

内连接中使用的子查询返回[样式/颜色/尺寸ID],[分支ID]的每组的最新行。