计算行动之间的天数差异

时间:2013-11-22 12:13:40

标签: sql-server tsql

我需要计算CaseActionHistory表中操作之间的天数。

我知道我应该使用datediff(day,start,end)但是我在定义“end”时遇到了麻烦。现在它看起来像:

,datediff(day, convert(date,max(CA.DateAdded)), end) as [Time between]

例如:

我在2013年3月23日完成了1个动作,第2个动作于2013年6月11日完成,我需要计算日期之间的差异。

想法?

整个查询:

SELECT DISTINCT
CDV.SetId
,CAD.Description
,max(CA.DateAdded) as [DateAdded]
,CDV.DateImported
,CDV.EndServiceDate
,datediff(day, convert(date,min(CA.DateAdded)), convert(date,max(CA.DateAdded))) as [Czas pomiędzy]
,datediff(day, CDV.DateImported, max(CA.DateAdded)) as [Dzień obsługi]
from
CaseActionHistory as CA
join CaseDetailsView as CDV on CA.CaseDetailId = CDV.CaseDetailsId
join CaseActionDefinition as CAD on CA.CaseActionDefinitionId = CAD.DefinitionId
where
CDV.ClientId = 1
and
CDV.SetId IN (158,159,160,170,171,172,173,174,175,176,177,194,218,219,220,241,255,256,257,258)
and
CA.CaseActionDefinitionId between 28 and 33

group by CDV.SetId,CAD.Description, CDV.DateImported, convert(date, CA.DateAdded), CDV.EndServiceDate

enter image description here

所以我希望23.05.2013和2013.06.2013之间有差异,然后是2013年6月5日到2013年6月11日等等。

2 个答案:

答案 0 :(得分:2)

我认为你想要的是获得为该ID /人/任何事物添加的日期和最后日期值之间的日期差异,你可以做类似的事情。

;WITH CTE AS
(
    SELECT  *,
            RN = ROW_NUMBER() OVER(ORDER BY [Date] DESC)
    FROM (/*Your Query Will go here*/) A
)
SELECT  *,   DATEDIFF(DAY, X.Date, Y.DATE) NumOfDays

FROM CTE X LEFT JOIN CTE Y
ON X.RN = Y.RN - 1

答案 1 :(得分:0)

更多细节会有所帮助! 您可能需要根据要获取数据的格式使用自联接或CTE。 如果你在这里添加更多的detials,我可以提供帮助..