我正在处理一个查询,我在DateDiff
语句中执行了Select
来创建三列,在我的查询中创建两列之间的微小差异。我现在需要做的是将那些DateDiff
结果中的数据放入存储桶中,但我仍然坚持如何完成这项工作。
这些是我Select
声明的计算结果:
,DATEDIFF (minute, ORD_MSG_MST.ORD_RCV_DTTM, PF_MST.ISSU_DTTM) AS 'Order_Issue'
,DATEDIFF (minute, ORD_MSG_MST.ORD_RCV_DTTM, UNIT_HIST.OCCR_DTTM AS 'Order_XM'
,DATEDIFF (minute, UNIT_HIST.OCCR_DTTM, PF_MST.ISSU_DTTM) AS 'XM_IS'
我打算尝试在我的FROM
语句中将其添加为子查询:
LEFT OUTER JOIN
SELECT
count(CASE WHEN 'Order_XM'>= 0 AND 'Order_XM' < 10 THEN 1 END) AS '0 - 10',
count(CASE WHEN 'Order_XM'>= 11 AND 'Order_XM' < 20 THEN 1 END) AS '11 - 20',
count(CASE WHEN 'Order_XM'>= 21 AND 'Order_XM' < 30 THEN 1 END) AS '21 - 30',
count(CASE WHEN 'Order_XM'>= 31 AND 'Order_XM' < 40 THEN 1 END) AS '31 - 40',
FROM ____) )
但我不知道我需要在FROM语句中输入什么表。而且我不确定这是否真的是这样做的正确方法。
有关如何在查询中将计算列添加到同一查询中的存储桶中的任何想法,以便我可以在报表生成器中创建直方图?
我已经对此进行了大量搜索,并且没有找到任何已经计算过的值。 TIA
答案 0 :(得分:0)
您可以使用计算出的DateDiff
列进行初始查询,并将其用作子查询 - 这样您就可以拥有执行分段的主要查询。
您没有发布大部分SQL,因此很难展示一个完全相关的示例。因此,我将使用MS中的Northwind示例数据库来显示一个应该很容易遵循并修复您自己的查询的示例。
Northwind有一个Orders
表,其中包含两个DATETIME
列: RequiredDate 和 ShippedDate 。我的子查询在这两列之间计算DateDiff
(days
而不是minutes
)并将其称为Diff
。然后,主查询为包含值范围的三个桶中的每一个计算COUNT
。
SELECT
COUNT(CASE WHEN Diff >= -50 AND Diff < -25 THEN 1 END) AS '-50 through -25',
COUNT(CASE WHEN Diff >= -25 AND Diff < 0 THEN 1 END) AS '-25 thorugh 0',
COUNT(CASE WHEN Diff >= 1 AND Diff < 25 THEN 1 END) AS '0 thorugh 25'
FROM
(
SELECT DATEDIFF(day, RequiredDate, ShippedDate) AS 'Diff'
FROM [Northwind].[dbo].[Orders]
) a
使用此示例,我认为您应该能够对自己的查询进行类似的更改,以获得您要查找的结果。