我需要计算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
所以我希望23.05.2013和2013.06.2013之间有差异,然后是2013年6月5日到2013年6月11日等等。
答案 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,我可以提供帮助..