【发布时间】:2023-03-28 01:00:01
【问题描述】:
我想区分全额退款和部分退款。 SQL 数据库中没有标志,因此这个请求。关于数据的解释很少。可能会全额退款或部分退款给客户。全额退款是客户支付的全额退款,部分退款是部分退款。
我有 2 个表,订单表头和订单行(表头表有 CustomerId、OrderId、OrderDate、OrderGuid、OrderType、Amount、Reasoncode) (行表有 CustomerId、OrderId、OrderDate、OrderGuid、ItemNo、Quantity、LineAmount)。
当客户订购时,它会在标题级别如下所示:
OrderId OrderDate CustomerID OrderGuid OrderType Amount ReasonCode
FN1 2018-07-15 1 FN1-1 Sales 50
FN2 2018-07-16 2 FN2-1 Sales 100
行级相同:
OrderId OrderDate CustomerID OrderGuid ItemNo LineAmount Qty
FN1 2018-07-15 1 FN1-1 123-0 20 1
FN1 2018-07-15 1 FN1-1 111-0 30 1
FN2 2018-07-16 2 FN2-1 586-0 40 1
FN2 2018-07-16 2 FN2-1 482-1 20 1
FN2 2018-07-16 2 FN2-1 784-1 20 1
FN2 2018-07-16 2 FN2-1 624-0 20 1
退款时标头级别:
OrderId OrderDate CustomerID OrderGuid OrderType Amount ReasonCode
FN1 2018-07-20 1 FN1-RF1 Credit 50 Lost_in_post
FN2 2018-07-21 2 FN2-RF1 Credit 60 Damaged_in_transit
行级相同:
OrderId OrderDate CustomerID OrderGuid ItemNo LineAmount Qty
FN1 2018-07-20 1 FN1-RF1 123-0 20 1
FN1 2018-07-20 1 FN1-RF1 111-0 30 1
FN2 2018-07-21 2 FN2-RF1 482-1 20 1
FN2 2018-07-21 2 FN2-RF1 784-1 20 1
FN2 2018-07-21 2 FN2-RF1 624-0 20 1
注意:没有 RefundDate 列,但它仍然是 OrderDate,日期为退款日期。
预期结果:我希望在两个不同的表中看到它们 全额退款:
OrderNo ItemNo Qty
FN1_RF1 123-0 1
FN1-RF1 111-0 1
部分退款:
OrderNo ItemNo Qty
FN2-RF1 482-1 1
FN2-RF1 784-1 1
FN2-RF1 624-0 1
希望这是有道理的。 如果您有任何问题,请问我。先感谢您。 最好的
【问题讨论】:
-
如果您将部分退款视为“订单的一部分已退款”,您为什么要将这些项目放在一个表中?这些物品已全额退款(每件 20 美元,20 美元)。
-
@Eli 原始订单有 4 件商品,但退款是 3 件商品因此部分退款。
-
我知道,如果您从整体上查看订单,“全额退款”与“部分退款”应该在订单级别,而不是在订单项目级别。还有一点,将退款项目存储在单独的表中的目的是什么?
-
您还必须考虑部分线路的退款。如果您在一行上发送了 10 个
482-1物品,但有两个有缺陷并退回了退款,您如何在您的数据库中表示它。当前的结构假定每件商品只有一行,或者全有或全无退货。 -
也就是说,对于您当前的数据集,(已发货的行)和(已退款的行)之间的简单差异可以识别全部或部分退款。如果退款的行数 = 已发货的行数,则为全额退款,否则为部分退款。
标签: sql sql-server