【发布时间】:2018-09-22 05:06:05
【问题描述】:
我有 3 个表,我试图从中报告它们都是相关的,但有不同数量的记录。我想要每个订单的摘要行,显示职位描述、总价格和总成本。
我的表格如下:
价格
| Order | Line # | Description | Price |
+-------+--------+--------------+-------+
| 1 | 1 | Line 1 job#1 | 100 |
| 1 | 2 | Line 2 job#1 | 30 |
| 2 | 1 | Line 1 job#2 | 100 |
| 3 | 1 | Line 1 job#3 | 75 |
成本线
| Order | Line # | Cost record | Cost |
+-------+--------+-------------+------+
| 1 | 1 | 1 | 80 |
| 1 | 2 | 2 | 80 |
| 1 | 2 | 3 | 50 |
| 2 | 1 | 1 | 75 |
| 3 | 1 | 1 | 50 |
| 3 | 1 | 2 | 50 |
订单标题
| Order | Description | Sales Person |
+-------+-------------+--------------+
| 1 | Order # 1 | 1 |
| 1 | Order #2 | 2 |
| 1 | Order #3 | 1 |
我不断获得许多相关行。我一直在尝试使用 sum 的子查询,但我无法让它工作。
预期结果:
| Order | Description | Price | Cost | Sales Person |
+-------+-------------+-------+------+--------------+
| 1 | Order #1 | 130 | 210 | 1 |
| 2 | Order #2 | 100 | 75 | 2 |
| 3 | Order #3 | 75 | 100 | 1 |
【问题讨论】:
-
预期结果是什么?
-
订单存储在哪里?我假设在
Order Header,但里面只有一个订单(有三个不同的描述和两个不同的销售人员),所以这不可能......为什么Cost lines中有两条记录具有相同的@ 987654327@ 订单 1? -
具体的数据库引擎是什么? (例如 Oracle、PostgreSQL、MySQL、SQL Server 等)
-
我认为“价格”应该高于“成本”。但是,订单 #1 的价格仅为 130 美元(100 + 30),而成本为 210 美元(80 + 80 + 50)。这有什么意义?
-
我正在使用 SQL Server。人们希望价格高于成本,但并非总是如此。我的目标不是落后于业务规则,而是生成正确的 SQL 语法。我可以编写单个查询并从表中获取总和,但是当我加入它们时,我得到的结果太多了。
标签: sql sql-server sum