【发布时间】:2011-05-11 16:49:02
【问题描述】:
我正在查询一个基本上是一堆日期的表。
FRECDCUST DTRECDCUST DTINSPECTED DTRECDCUSTPO DTADDEDSO DTSHIPPEDSUP DTQUOTEDCUST
1/1/1900 12:00:00 AM 7/27/2010 12:00:00 AM 7/30/2010 12:00:00 AM 7/26/2010 12:00:00 AM 8/6/2010 12:00:00 AM 1/1/1900 12:00:00 AM 8/6/2010 12:00:00 AM
1/1/1900 12:00:00 AM 7/27/2010 12:00:00 AM 7/30/2010 12:00:00 AM 7/26/2010 12:00:00 AM 8/6/2010 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM
1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM
1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM
1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM 1/1/1900 12:00:00 AM
1/1/1900 12:00:00 AM 3/12/2010 12:00:00 AM 3/15/2010 12:00:00 AM 3/11/2010 12:00:00 AM 3/16/2010 12:00:00 AM 3/24/2010 12:00:00 AM 4/13/2010 12:00:00 AM
1/1/1900 12:00:00 AM 11/6/2009 12:00:00 AM 11/6/2009 12:00:00 AM 11/3/2009 12:00:00 AM 11/9/2009 12:00:00 AM 11/20/2009 12:00:00 AM 12/7/2009 12:00:00 AM
我正在计算每行两个日期之间的日期差。例如,检查的天数是这样找到的:
SELECT (CASE
WHEN year(SYC_ext.DTRECDCUST) <> 1900
AND year(SYC_ext.DTINSPECTED) <> 1900
THEN
DATEDIFF(dd, SYC_ext.DTRECDCUST, SYC_ext.DTINSPECTED)
ELSE
NULL
END)
AS [AverageDaystoInspect]
Blah blah...
这会创建一行不同的 DateDiff 计算,最终看起来像这样:
Product Class Average Days to Inspect Average Days to Process SO Average Days to Ship to Affiliate Average Days to Quote Average Days to Receive Ammended PO
01 2 4 8 27 21
01 2 4 8 27 21
01 3 5 2 88 8
01 3 5 2 88 8
01 1 8 11 72 1
01 3 2 7 27 0
01 5 2 7 27 0
请原谅间距问题。
因此,数据集中的每一行都以一个代表产品类别的数字开头,在本例中为 01,然后是一系列日期计算。
我可以对这些值进行平均,并为每个产品类别的每个类别提供一个平均值。但是,他们希望在表格或矩阵的左侧进行日计算,产品类别在顶部,这与我在这里的完全相反。如果我在 Excel 中旋转它们,我会得到以下信息:
01 05 10
Avg Days to Inspect 5 3 5
Avg Days to Process PO 4 5 5
Avg Days to Ship 20 18 19
我希望这是有道理的。知道如何在 SSRS 或 t-sql 中执行此操作吗?
【问题讨论】:
标签: sql-server tsql sql-server-2000 ssrs-2008