Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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_Tsql_Sum_Unique - Fatal编程技术网

Sql 如何求唯一行的和?

Sql 如何求唯一行的和?,sql,tsql,sum,unique,Sql,Tsql,Sum,Unique,我试图计算收集每个订单所用的时间,因为所有订单都是成批处理的——它使用不同的ID 如果我使用Sum(DateDiff(分钟,pick.pick\u开始时间,pick.pick\u结束时间)作为[pick Total time],它将输出时间70。这应该是14,因为它显示每个订单的相同时间,显然是因为它在ID 1下的1个批次中 示例如下: 有没有办法计算唯一的开始时间和结束时间,使其仅输出14?解决方案可能只是计算最小开始时间和最大结束时间之间的时间差: SELECT ID ,Date

我试图计算收集每个订单所用的时间,因为所有订单都是成批处理的——它使用不同的ID

如果我使用
Sum(DateDiff(分钟,pick.pick\u开始时间,pick.pick\u结束时间)作为[pick Total time]
,它将输出时间70。这应该是14,因为它显示每个订单的相同时间,显然是因为它在ID 1下的1个批次中

示例如下:
有没有办法计算唯一的开始时间和结束时间,使其仅输出14?

解决方案可能只是计算最小开始时间和最大结束时间之间的时间差:

SELECT ID
      ,DateDiff(MINUTE,MIN(pick_start_time),MAX(pick_end_time)) AS [Pick Total]
  FROM yourtable
 GROUP BY ID 

解决方案可能只是计算最小开始时间和最大结束时间之间的时间差:

SELECT ID
      ,DateDiff(MINUTE,MIN(pick_start_time),MAX(pick_end_time)) AS [Pick Total]
  FROM yourtable
 GROUP BY ID 

用这个似乎不管用

添加了完整的代码,使我的工作更有意义

Select
Distinct(pick.pick_start_time) as Start time
picker.pic_name As Picker,
Count(distinct(order_header.oh_order_number) As [Order QT],
Sum(pick_line.pickl_quantity) As [Total items],
SUM(DateDiff(MINUTE,MIN(pick_start_time),MAX(pick_end_time)) AS [Pick Total]

From delivery_header 
Inner Join
  (((pick_line 
    Inner Join
        pick On pick_line.pickl_pick_id = pick.pick_id) 
    Inner Join
      picker On pick.pick_pic_id = picker.pic_id) 
Inner Join
    (pack 
    Inner Join
      pack_line On pack.pack_id = pack_line.pl_pack_id) On pick_line.pickl_id =
      pack_line.pl_pickl_id) On delivery_header.dh_pack_id = pack.pack_id
    Inner Join
  order_header On order_header.oh_id = delivery_header.dh_oh_id


Where pick.pick_end_time >= @DateFrom And pick.pick_end_time <= @DateTo And
  (pick.pick_pic_id = @picker Or @AllPickers = 1)

Group By picker.pic_name
Order By picker.pic_name
选择
开始时间不同(拾取。拾取开始时间)
picker.picu作为picker的名称,
计数(不同的(订单头。订单号)为[order QT],
总和(拣选行。拣选数量)为[总项目],
总和(DateDiff(分钟、最小值(拾取开始时间)、最大值(拾取结束时间))为[拾取总计]
从传送头
内连接
((拾取线)
内连接
pick On pick_line.pickl_pick_id=pick.pick_id)
内连接
pick.pick\u pick\u id=picker.pic\u id)上的选取器
内连接
(包
内连接
pack.pack\u id=pack\u line.pl\u pack\u id)On pick\u line.pickl\u id=
pack_line.pl_pickl_id)在交货时_header.dh_pack_id=pack.pack_id
内连接
order_header.oh_id上的order_header=delivery_header.dh_oh_id

其中pick.pick\u end\u time>=@DateFrom和pick.pick\u end\u time使用该选项似乎不起作用

添加了完整的代码,使我的工作更有意义

Select
Distinct(pick.pick_start_time) as Start time
picker.pic_name As Picker,
Count(distinct(order_header.oh_order_number) As [Order QT],
Sum(pick_line.pickl_quantity) As [Total items],
SUM(DateDiff(MINUTE,MIN(pick_start_time),MAX(pick_end_time)) AS [Pick Total]

From delivery_header 
Inner Join
  (((pick_line 
    Inner Join
        pick On pick_line.pickl_pick_id = pick.pick_id) 
    Inner Join
      picker On pick.pick_pic_id = picker.pic_id) 
Inner Join
    (pack 
    Inner Join
      pack_line On pack.pack_id = pack_line.pl_pack_id) On pick_line.pickl_id =
      pack_line.pl_pickl_id) On delivery_header.dh_pack_id = pack.pack_id
    Inner Join
  order_header On order_header.oh_id = delivery_header.dh_oh_id


Where pick.pick_end_time >= @DateFrom And pick.pick_end_time <= @DateTo And
  (pick.pick_pic_id = @picker Or @AllPickers = 1)

Group By picker.pic_name
Order By picker.pic_name
选择
开始时间不同(拾取。拾取开始时间)
picker.picu作为picker的名称,
计数(不同的(订单头。订单号)为[order QT],
总和(拣选行。拣选数量)为[总项目],
总和(DateDiff(分钟、最小值(拾取开始时间)、最大值(拾取结束时间))为[拾取总计]
从传送头
内连接
((拾取线)
内连接
pick On pick_line.pickl_pick_id=pick.pick_id)
内连接
pick.pick\u pick\u id=picker.pic\u id)上的选取器
内连接
(包
内连接
pack.pack\u id=pack\u line.pl\u pack\u id)On pick\u line.pickl\u id=
pack_line.pl_pickl_id)在交货时_header.dh_pack_id=pack.pack_id
内连接
order_header.oh_id上的order_header=delivery_header.dh_oh_id

其中pick.pick\u end\u time>=@DateFrom和pick.pick\u end\u time您可以使用特定订单的最小开始时间和最大结束时间。这将为您提供完成订单所需的确切时间…因此..在该函数中,您可以传递最小pick\u start\u时间和最大pick\u end\u时间您有办法区分dif吗不同批次?@dodekja据我所知,第一列是一个ID。因此,具有相同ID的所有行都是一个orderYes.的一部分。基于批次ID。这将是唯一的。预期结果是什么?您可以对特定订单使用最小开始时间和最大结束时间。这将为您提供完成订单所需的确切时间…那么..在该函数中,您可以传递最小的pick_start_time和最大的pick_end_time是否有方法区分不同的批?@dodekja据我所知,第一列是一个ID。因此,具有相同ID的所有行都是一个orderYes的一部分..基于批ID…,这将是唯一的。预期结果是什么?导入OP在这里要注意的是
GROUP BY
子句。OP在这里要注意的重要事情是
GROUP BY
子句。因为我将有多个订单ID、订单号、选择器..我需要总结每个选择器的整个拾取时间,我将有多个订单ID、订单号、选择器..我需要总结整个拾取时间e每个选择器的拾取时间