2014-11-14 35 views
0

我手頭上有一個POS sql數據庫庫存,我正在努力工作。在Sql Server 2008 R2中過濾手頭上的庫存清單

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]的最近[日期]實例希望我已經解釋得很好!任何幫助是極大的讚賞

感謝, 出溫

回答

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]。