Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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 OrderBy日期,但包含前一天“半天”的记录_Sql_Tsql_Date_Datetime - Fatal编程技术网

Sql OrderBy日期,但包含前一天“半天”的记录

Sql OrderBy日期,但包含前一天“半天”的记录,sql,tsql,date,datetime,Sql,Tsql,Date,Datetime,日期:行积压:数量积压 2015-09-20:10:50 2015-09-21:5:25 这里的问题是当我们到达第二天。。。如果订单在2015-09-21 12:00之后完成,21将获得更多记录 当我们运行此程序时,只需将前一天12:00之前的记录按日期分组即可 我的问题是。。 我想显示2015-09-22的日期,并在2015-09-21的12:00之后到2015-09-22的12:00之前保留记录。。。所以这应该是可行的。它先将注册日期移动12小时 SELECT cast(Ord.regdat

日期:行积压:数量积压

2015-09-20:10:50

2015-09-21:5:25

这里的问题是当我们到达第二天。。。如果订单在2015-09-21 12:00之后完成,21将获得更多记录

当我们运行此程序时,只需将前一天12:00之前的记录按日期分组即可

我的问题是。。
我想显示2015-09-22的日期,并在2015-09-21的12:00之后到2015-09-22的12:00之前保留记录。。。所以这应该是可行的。它先将注册日期移动12小时

SELECT cast(Ord.regdate AS date) AS Date,
       COUNT(Ord.Ordernumber) AS [Backlog of line],

  (SELECT CASE
              WHEN CAST(SUM(Ord.Qty) AS INT) IS NULL THEN 0
              ELSE CAST(SUM(Ord.Qty) AS INT)
          END) AS [Backlog of Qty]
FROM Orders [Ord]
WHERE Ord.regdate < CAST(CAST(CAST(DATEADD(DAY,-1,GETDATE()) AS date) AS varchar(10)) + ' 12:00' AS datetime)
GROUP BY cast(Ord.regdate AS date)
ORDER BY cast(Ord.regdate AS date) DESC    

构建一个视图,使用半天规则获取3列:RegDate date、RegDateFrom datetime、RegDateTo datetime,加入RegDateFrom和RegDateTo上的订单,然后按RegDate分组。谢谢,这是一个prod服务器,因此在没有它们的情况下无法创建新视图或表。如果有人有其他修复程序,请告诉我使用CTE不需要是物理视图
SELECT Ord.regdate AS Date,
       COUNT(Ord.Ordernumber) AS [Backlog of line],

  (SELECT CASE
              WHEN CAST(SUM(Ord.Qty) AS INT) IS NULL THEN 0
              ELSE CAST(SUM(Ord.Qty) AS INT)
          END) AS [Backlog of Qty]
FROM (
    Select Ordernumber, Qty, CAST(DATEADD(HOUR, 12, regdate) as date) as regdate
    From Orders 
    WHERE regdate < CAST(CAST(CAST(DATEADD(DAY,-1,GETDATE()) AS date) AS varchar(10)) + ' 12:00' AS datetime)
) [Ord]
GROUP BY Ord.regdate
ORDER BY Ord.regdate DESC