【发布时间】:2019-01-22 13:47:12
【问题描述】:
我正在编写一个脚本,试图从查询中获取结果:
SELECT
OrdNumber,
Detail1,
Detail2,
Detail3,
Date,
Quantity,
Customer,
OrderingCode
FROM Orders o
INNER JOIN (SELECT os.*,
row_number() over (partition by Detail1, Detail2,Detail3 ) as seqnum
FROM orderSheets os
) os
on o.product = os.product and
o.Detail2 = os.Detail2 and
o.Detail3 = os.Detail3
并根据某些条件从那里获取必要的数据,并将关联的记录插入到两个表中。
我想根据该订单上该客户的不同 Detail1、Detail2 和 Detail3 对每个记录进行分组来插入,然后如果我有多个相同 detail1/detail2/detail3/ 的记录,则还要查看最高数量客户唯一分组
通过上面的查询,假设我返回了这些结果:
OrdNumber | Detail1 | Detail2 | Detail3 | Date | Quantity | Customer | OrderingCode
-----------------------------------------------------------------------------------------
12345 122 123 12 12/12/2018 2 123 567
12345 122 123 15 12/12/2018 2 123 567
12345 516 123 63 12/12/2018 5 123 567
12345 617 123 14 12/12/2018 7 123 567
12345 617 123 14 12/12/2018 4 123 567
12345 617 123 17 12/12/2018 2 123 567
12345 745 123 43 12/12/2018 2 123 567
大多数结果已经不同,但我有两条记录在该订单(617、123、14)上为该客户共享相同的 detail1、detail2 和 detail3,因此在这种情况下,我只想插入一条记录将这两个结果(不同的详细信息、客户编号、订单号、日期和 orderingCode)和一个外国相关记录插入到产品表中,但我只想插入 2 条记录中的最高数量(所以在那例如,我将插入订单号、作为产品 ID 的外键和 7 作为数量,因为它是具有 7 和 4 的两条记录中的最高值)
所以有了上面的结果集,我想像这样将插入到两个表中:
产品
ID | Detail1 | Detail2 | Detail3 | Customer | OrderingCode | Date
----------------------------------------------------------------------------
1001 122 123 12 123 567 12/12/2018
1002 122 123 15 123 567 12/12/2018
1003 516 123 63 123 567 12/12/2018
1004 617 123 14 123 567 12/12/2018
1005 617 123 17 123 567 12/12/2018
1006 745 123 43 123 567 12/12/2018
订单
P_ID | Quantity | Date | orderNumber
-------------------------------------------------
1001 2 12/12/2018 12345
1002 2 12/12/2018 12345
1003 5 12/12/2018 12345
1004 7 12/12/2018 12345
1005 2 12/12/2018 12345
1006 2 12/12/2018 12345
【问题讨论】:
-
太棒了。有什么问题?
-
如何根据该示例编写插入,以便我可以插入我需要的数据,如果同一客户有多个记录,detail1,detail2,detail3 然后我只插入一条记录并使用每个中的最高数量?
-
我认为
max(quantity)和group by customer,detail1,detail2,detail3可能是查询的一部分。 -
插入行的
ID/P_ID值从何而来? -
products表中的ID为主键,P_ID作为外键使用