Sql OrderBy日期,但包含前一天“半天”的记录
日期:行积压:数量积压 2015-09-20:10:50 2015-09-21:5:25 这里的问题是当我们到达第二天。。。如果订单在2015-09-21 12:00之后完成,21将获得更多记录 当我们运行此程序时,只需将前一天12:00之前的记录按日期分组即可 我的问题是。。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-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