Sql 订单和发货表中的聚合/联接
我是SQL新手,我遇到了一个问题。 我有两张表,如下所示 订单表 奥德努姆 订单日期 客户名称 订单总数 1111 2021-03-11 基础知识 1000 从这个开始:Sql 订单和发货表中的聚合/联接,sql,sql-server,join,aggregate,aggregate-functions,Sql,Sql Server,Join,Aggregate,Aggregate Functions,我是SQL新手,我遇到了一个问题。 我有两张表,如下所示 订单表 奥德努姆 订单日期 客户名称 订单总数 1111 2021-03-11 基础知识 1000 从这个开始: Declare @order_table Table (Ord_num int, Ord_date date, Customer_name varchar(30), Order_total int); Insert Into @order_table (Ord_num, Ord_date, Customer_name, Or
Declare @order_table Table (Ord_num int, Ord_date date, Customer_name varchar(30), Order_total int);
Insert Into @order_table (Ord_num, Ord_date, Customer_name, Order_total)
Values (1111, '2021-03-11', 'ABC', 1000)
, (2222, '2021-04-11', 'XYZ', 2000);
Declare @shipping_table Table (Ord_Num int, Pkg_num int, Pkg_weight int, Shipped_date date, Shipping_cost int)
Insert Into @shipping_table (Ord_Num, Pkg_num, Pkg_weight, Shipped_date, Shipping_cost)
Values (1111, 1, 30, '2021-03-12', 10)
, (1111, 2, 20, '2021-03-13', 8)
, (2222, 1, 15, '2021-04-12', 5)
, (2222, 2, 10, '2021-04-13', 3);
Select ord.Ord_num
, ord.Ord_date
, ord.Customer_name
, Order_total = iif(shp.Pkg_num = 1, ord.Order_total, 0)
, shp.Pkg_num
, shp.Shipped_date
, shp.Pkg_weight
, shp.Shipping_cost
From @order_table ord
Inner Join @shipping_table shp On shp.Ord_Num = ord.Ord_num;
然后可将其转换为总计:
Select ord.Ord_num
, ord.Ord_date
, ord.Customer_name
, Order_total = sum(iif(shp.Pkg_num = 1, ord.Order_total, 0))
, Pkg_weight = sum(shp.Pkg_num)
, Shipping_cost = sum(shp.Shipping_cost)
From @order_table ord
Inner Join @shipping_table shp On shp.Ord_Num = ord.Ord_num
Group By
ord.Ord_num
, ord.Ord_date
, ord.Customer_name;
“当我聚合其他列时,如pkg_weight和shipping_cost”以及该聚合在您的查询中的位置?我尝试过这样做,但我没有写出来,因为我有许多订单在不同的日期发货。因此,当我想找到整体金额时,它将显示订单总额的两倍,以及包装重量和运输成本的正确金额。不管怎样,我现在就编辑它。谢谢你的评论!非常感谢你,杰夫!