【发布时间】:2021-11-24 05:42:10
【问题描述】:
我的表结构如下:
交易表:
code type action level id qty OrderID
====================================================
10005 PRODUCT RECIPE 0 0 1 O-123
821 VALUE_MEAL RECIPE 0 1 1 O-123
9 PRODUCT RECIPE 1 1 1 O-123
7093 PRODUCT RECIPE 1 1 1 O-123
10005 PRODUCT CHOICE 1 1 1 O-123
721 VALUE_MEAL RECIPE 0 2 1 O-123
9 PRODUCT RECIPE 1 2 1 O-123
7093 PRODUCT RECIPE 1 2 1 O-123
10005 PRODUCT CHOICE 1 2 1 O-123
我的主表:
code FullName MenuCategory
---------------------------------
821 ML2 Group2
721 ML1 Group2
9 fires Group2
10005 Orange Group3
预期结果集:
code QTY with Meal Sold Alone
------------------------------------
10005 2 1
在预期结果中,我们需要区分商品代码“10005”是与具有不同级别和 id 的 VALUE_MEAL 一起出售的,还是在同一订单中作为 PRODUCT 单独出售?
示例:code=821,包含三个主要的子级别(9、7093、10005)和code=721,包含三个主要的子级别(9、7093、10005) 所以在这里我们知道 2 个数量以 10005 的价格出售,因为它是 VALUE_MEALS 的一部分,而一个数量为代码 = 10005 作为独立产品的一部分
【问题讨论】:
-
您肯定有不同的“超值餐”组合吗?如果是这样,您如何在事务表中区分它们?您的样本数据中似乎只有 1 次明显的“超值餐”,而且根本不包括 10005。你的逻辑是什么?请为您的表格发布 DDL - 我们需要了解约束。
-
所以解释您的预期结果,这对您来说可能很明显,但不要指望人们猜测。
-
@SMor,VALUE_MEAL 是包含子项的父项,例如 code = 821 包含 9、7093 和 10005 作为 id 1 的子级别
-
@Stu 希望你现在能理解我的逻辑
标签: sql sql-server tsql sql-server-2012