【发布时间】:2015-12-17 07:11:36
【问题描述】:
我正在尝试将一张表中的多条记录分配给第二张表中的单条记录,直到达到数量为止。我正在使用 MS SQL 2012。
我们有这个外部发票表
ExtInvoice
+-------------+------+------+-------------+----------+----------+
| Ext_Invoice | P_No | Part | InvoiceDate | Due_Date | NumOrder |
+-------------+------+------+-------------+----------+----------+
| 571 | 607 | 7991 | 151116 | 151222 | 1 |
| 572 | 607 | 7991 | 151120 | 151228 | 2 |
| 573 | 607 | 7991 | 151127 | 160104 | 3 |
+-------------+------+------+-------------+----------+----------+
内部发票
+------------+----------+------+------+-----+----------+
| Invoice_No | Original | P_No | Part | Qty | NumOrder |
+------------+----------+------+------+-----+----------+
| 198 | 607 | 607 | 7991 | 2 | 1 |
| 199 | RE607 | 607 | 7991 | 1 | 2 |
| 200 | RE607 | 607 | 7991 | 1 | 3 |
+------------+----------+------+------+-----+----------+
结果是将ExtInvoice 中的前两条记录分配给InternalInvoice 中的第一条记录,其余的应该分配给第二条InternalInvoice 记录。 ExtInvoice 中的每一行代表一个Quantity。
NumOrder 不是唯一的,因为这是一个 ROW_Number SQL 计算。
想要的结果是:
表格中显然有更多发票,但这是它不起作用的部分。有一些带有 row_number() 操作的临时表可以访问 ExtInvoice、InternalInvoice 表。我其实用过这个thread
我正在使用
SELECT *
FROM InternalInvoice AS R
JOIN ExtInvoice AS S
ON S.P_No=R.P_No
AND S.Part=R.Part
AND R.Qty>=S.NumOrder
这就是我得到的。我尝试了很多不同的方法,但看起来我现在被卡住了。任何帮助表示赞赏。
对不起,图片链接,我似乎还没有直接链接图片的声誉。当我获得足够的代表时,我会将它们改回来。
【问题讨论】:
标签: sql sql-server sql-server-2012