我尝试从中报告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 |
我一直在通往许多相关的行。我一直在尝试使用求和的子查询,但是我无法使其正常工作。
预期结果:
| Order | Description | Price | Cost | Sales Person |
+-------+-------------+-------+------+--------------+
| 1 | Order #1 | 130 | 210 | 1 |
| 2 | Order #2 | 100 | 75 | 2 |
| 3 | Order #3 | 75 | 100 | 1 |
答案 0 :(得分:1)
我认为您的示例数据有误,第一列应读取1
,2
和3
,而不是三倍1
。至少您想要的结果使这看起来很合理。
将成本和价格加入订单,然后GROUP BY
将订单和成本和价格的总和计算出来。
SELECT o.[Order],
o.[Description],
sum(p.[Price]) [Price],
sum(c.[Cost]) [Cost],
o.[Sales Person]
FROM [Order Header] o
LEFT JOIN [Cost lines] c
ON c.[Order] = o.[Order]
LEFT JOIN [Prices] p
ON p.[Order] = o.[Order]
GROUP BY o.[Order],
o.[Description],
o.[Sales Person];