我手头上有一个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]的最新[日期]实例希望我已经解释得这么好了!非常感谢任何帮助
谢谢, 出温
答案 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]的每组的最新行。