我有几个SQL表:
- 包含客户代码、地址的客户表
- 包含产品代码、名称和价格的产品表
- 包含发票代码、客户代码的发票表
- 包含发票代码、行号、产品代码和产品数量的发票行
我试图通过发票行表中的发票代码获得发票的总金额,但由于某些产品有多个数量,因此无法准确地通过。
首先,我认为我可以将产品的每个数量作为单独的条目,而不是将数量部分放在表中,并使用select sum。从长远来看,这并不可行,肯定有更好的方法。
我会这样写:
SELECT SUM(li.Quantity_Col * p.Price_Col) AS 'Invoice Total'
FROM InvoiceLines li
INNER JOIN Products p ON li.ProductCode = p.Code
WHERE li.InvoiceId = 'sample_value'
地点:
Quantity_Col
是发票行表中存储每行项目数量的列名,Price_Col
是发票行表 中列的名称。InvoiceLines
是您存储发票行的表Products
是存储产品数据的表ProductCode
是到产品表 的发票行表中的FKCode
为产品表 中产品的代码InvoiceId
是作为发票表 的FK的列的名称。sample_value
是发票id的占位符,之后您想获得总价。li
是发票行表的缩写,我喜欢使用缩写而不是键入整个表名。p
也一样,它代表产品表
希望这对你有所帮助。如果您需要其他帮助(例如,将其转换为参数化函数),我将更新我的答案。