【发布时间】:2016-12-23 06:14:56
【问题描述】:
这是我的桌子:
-- receipts
| id | date |
|----|------------|
| 1 | 2016-12-20 |
| 2 | 2016-12-20 |
| 3 | 2016-12-21 |
-- purchases
| id | receipt_id | item | price | tax_rate |
|----|------------|-------------|-------|----------|
| 1 | 1 | apples | 3.89 | 0.000 |
| 2 | 1 | canned soup | 2.99 | 0.095 |
| 3 | 1 | candy bar | 0.99 | 0.095 |
| 4 | 2 | gas | 26.78 | 0.000 |
| 5 | 3 | chips | 3.99 | 0.095 |
| 6 | 3 | dip | 2.99 | 0.095 |
我正在尝试执行一个查询,该查询从收据表中返回 3 个项目,其中包括小计、总税款和总计。到目前为止,这就是我所拥有的 SQL。
SELECT
receipts.id,
receipts.date,
SUM(purchases.price) AS subtotal,
SUM(purchases.price * purchases.tax_rate) AS tax,
SUM(subtotal + tax_rate)
FROM receipts
RIGHT JOIN purchases ON purchases.receipt_id = receipts.id;
最终结果应该是这样的:
| id | date | subtotal | tax | total |
|----|------------|----------|------|-------|
| 1 | 2016-12-20 | 7.87 | 0.38 | 8.25 |
| 2 | 2016-12-20 | 26.78 | 0.00 | 26.78 |
| 3 | 2016-12-21 | 6.98 | 0.66 | 7.64 |
【问题讨论】:
-
你有什么问题?
-
SUM(subtotal + tax)给了我一个错误,上面写着Unknown column 'subtotal' in 'field list'如果我删除那个我得到的,我没有得到任何错误,但它只是返回第一行并将整列相加一行。 -
您不能在同一查询中引用字段别名。您要么需要将其放入子查询中,要么重复该别名的计算。