希望有人可以帮我解决以下问题。基本上,我有所有产品的销售线。我使用此表查找已售出的保修单以及保修所附带的产品。然后我试图按照所附产品的类别对其进行分组。
销售线表包含所有保修,附加产品sku,销售日期时间和保修类别。我正在尝试将其加入具有产品sku的历史类别表,该类别的生效日期时间以及该生效日期的产品类别。
我无法确定如何完成连接,因此拉出的数据是销售日期时间的历史类别。产品可以在我查看的时间段内多次更改类别,因此历史表中的同一项目有多个条目。
使用SQL Server,感谢您的帮助。
这是我到目前为止所做的:
SELECT
a.[Invoice Number]
,a.[SKU]
,a.[Item Category Code]
,a.[Sale Date]
,b.[Effective Date]
,b.[Category Code]
FROM [Sales Invoice Line] a
LEFT JOIN [Item Category Division History] b ON a.[Warranty Item_Resource No_] = b.[Item No_]
WHERE [Sales Date] between '2013-10-01' and '2014-09-30' AND b.[Division Code] is not null
答案 0 :(得分:1)
我不完全理解你的表格以及它们之间的关系。但我认为以下内容会给你这个想法。
假设您有两个表Sales和History,如下所示;
销售表
Date | Item | Category
历史表
Invoice_number | Item | Category
你想要一份报告;
Select s.invoice_number, s.Item, h.category
FROM sales s
INNER JOIN history h
ON s.item = h.item
INNER JOIN (
Select MAX(h.date) date, s.invoice_number, s.item
From sales s
Inner Join history h
ON s.item = h.item AND h.date <= s.date
Group By s.invoice_number, s.item
)a on a.date = h.date AND a.item = s.itme AND a.invoice_number = s.invoice_number
其中category是截至销售日期的项目有效类别,您可以使用以下内容;
date
内部查询会在每次促销之前查找category
上次更改item
Inner Join
的{{1}}。然后将其用作category
来过滤包含{{1}}的外部查询。
我们不能在内部查询中包含类别,因为它还需要按类别分组,并且它将返回在销售日期之前为其分配项目的每个类别的记录。