首页 > 解决方案 > 获取所有购买的订单以及 SQL 中的一组特定商品

问题描述

我想知道如何才能获得所有购买的订单以及一组特定商品。我有一个主项目表,其中包含大约 90 个基础项目,我的订单表包含所有收据。所以输出显示在我的项目表中显示了所有购买的订单以及我的基础项目。

主项目表:

ItemCode
-------
10001        
10002        
10003        
10004        

订单表:

SiteID   BusinessDate   ItemName   Units Sold   Units Sale   ItemCode  OrderNo
----------------------------------------------------------------------------
1        06/08/2018     Apple         1             5        10001    122-1
1        06/08/2018     Coffee        1             16       10002    122-1
1        06/08/2018     Ice Tea       2             7        10044    122-1
1        06/08/2018     Beans         9             18       10004    122-1

4        06/08/2018     Donuts        7             17       10066    122-7

1        06/08/2018     Bread         1             7        10003    122-4
1        06/08/2018     Beans         4             8        10004    122-4

2        06/08/2018     Apple         2             5        10001    122-2
2        06/08/2018     Coffee        1             6        10002    122-2

3        06/08/2018     Bread         3             5        10003    122-3
3        06/08/2018     Beans         7             17       10004    122-3

3        06/08/2018     Ice Tea       7             17       10044    122-5

4        06/08/2018     Ice Coffee    7             17       10050    122-6

结果:

SiteID   BusinessDate   ItemName   Units Sold   Units Sale   ItemCode  OrderNo
----------------------------------------------------------------------------
1        06/08/2018     Apple         1             5        10001    122-1
1        06/08/2018     Coffee        1             16       10002    122-1
1        06/08/2018     Ice Tea       2             7        10044    122-1
1        06/08/2018     Beans         9             18       10004    122-1

1        06/08/2018     Bread         1             7        10003    122-4
1        06/08/2018     Beans         4             8        10004    122-4

2        06/08/2018     Apple         2             5        10001    122-2
2        06/08/2018     Coffee        1             6        10002    122-2

3        06/08/2018     Bread         3             5        10003    122-3
3        06/08/2018     Beans         7             17       10004    122-3

查询输出必须将所有购买的交易连同我的项目主表值一起返回给我,例如,输出查询没有返回订单号:122-6,因为项目代码不存在于我的主项目代码中显示订单号:122-1 是因为订单和主项目表中存在我的一两个 ItemCode

标签: sqlsql-serversql-server-2012

解决方案


您可以尝试编写一个OrderNo匹配SiteID的子查询。

然后做join[Order]以获得您的预期结果。

SELECT o.* 
FROM [Order] o JOIN 
(
    SELECT DISTINCT OrderNo,SiteID
    FROM MasterItem m 
    JOIN [Order] o on o.ItemCode = m.ItemCode
) t1 on t1.OrderNo = o.OrderNo and t1.SiteID = o.SiteID

sqlfiddle


推荐阅读