Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 订单和发货表中的聚合/联接_Sql_Sql Server_Join_Aggregate_Aggregate Functions - Fatal编程技术网

Sql 订单和发货表中的聚合/联接

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

我是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, 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”以及该聚合在您的查询中的位置?我尝试过这样做,但我没有写出来,因为我有许多订单在不同的日期发货。因此,当我想找到整体金额时,它将显示订单总额的两倍,以及包装重量和运输成本的正确金额。不管怎样,我现在就编辑它。谢谢你的评论!非常感谢你,杰夫!