我在寻找所需的好查询,寻求帮助方面遇到一些困难。在多次JOIN和很多WHERE之后,我有了以下列和值:
+---------+----------+--------+-------+
| id_test | quantity | price | fee |
+---------+----------+--------+-------+
| "1-3" | 1 | 33.52 | 29.00 |
| "1-5" | 1 | 33.52 | 29.00 |
| "1-6" | 1 | 33.52 | 29.00 |
| "1-8" | 1 | 86.49 | 29.00 |
| "19-1" | 1 | 176.54 | 29.00 |
| "19-4" | 1 | 176.54 | 29.00 |
| "19-5" | 4 | 176.54 | 29.00 |
| "19-6" | 1 | 199.47 | 29.00 |
| "19-6" | 1 | 176.54 | 29.00 |
| "20-10" | 2 | 72.67 | 29.00 |
| "20-11" | 2 | 18.95 | 29.00 |
| "20-9" | 1 | 22.13 | 29.00 |
+---------+----------+--------+-------+
每个id_test对象的数量,价格和费用。我想对所有东西求和,以得到一个全球价格:(数量*价格)+费用事实是,这就是我遇到的问题,id_test只需要添加一次费用。但是,我这里有两个id_test“ 19-6”。
如果我总计所有东西,我将得到1827.67(价格*数量)+ 348(费用)。
因为我有两个“ 19-6”,所以我需要1827.67(价格*数量)+ 319(费用)。
您将如何使用SQL?
谢谢
[id_test仅一次,这意味着您必须进行不同的id_test。如果29.00是固定的静态值,则可以采用唯一的id_test并将其乘以29.00]
您可以将上述查询的值插入临时表(#tempTable)。然后,您上面的输出值将被临时保存到表中。
SELECT
DISTINCT(id_test) * 29.00 AS fee
FROM
#tempTable
select sum(quantity * price),
(select sum(fee)
from (select distinct(id_test), fee
from sales) as fees)
from sales;
您可以使用公用表表达式(CTE)
您可以使用row_number()