【发布时间】:2022-11-12 09:20:24
【问题描述】:
尝试从连接到另一个表的表中求和(导致第一个表的每行多行),它正在计算每个第二个表中的行数。
表:
create table t_orders (
oid int,
cartlink nvarchar(3),
ordertotal float,
ordertax float
);
create table t_cart (
cartlink nvarchar(3),
productid int
);
insert into t_orders (oid,cartlink,ordertotal,ordertax) values
(1,'abc',10, 2),
(2,'cdf',9, 1),
(3,'zxc',11, 3)
;
insert into t_cart (cartlink,productid) values
('abc', 123),('abc', 321),('abc', 987),
('cdf', 123),('cdf', 321),('cdf', 987),
('zxc', 123),('zxc', 321),('zxc', 987)
;
对t_orders 表使用以下值对问题更准确。使用distinct 只计算订单 2 和 3 一次,因为它们的总数都是 9。
values (1,'abc',10, 2),(2,'cdf',9, 1),(3,'zxc',9, 3);
查询及结果:
SELECT
SUM(t_orders.ordertotal) AS SumOfTotal,
SUM(t_orders.ordertax) AS SumOfTax
FROM
t_orders
JOIN t_cart ON t_orders.cartlink = t_cart.cartlink
;
| SumOfTotal | SumOfTax |
|---|---|
| 90 | 18 |
我想要的是 :
| SumOfTotal | SumOfTax |
|---|---|
| 30 | 6 |
我有加入t_orders -> t_cart -> t_products -> t_manufacturer,因为我想从t_orders WHERE t_manufacturer.type = 'some value' 中求和。
【问题讨论】:
标签: sql sql-server join sum