2014-02-25 57 views
0

我在做日期轉換時並不那麼強大。我確信我因時間戳而丟失記錄。我需要在此查詢中轉換我的日期,以便我可以獲得滾動的季度日期總和。任何幫助將非常感謝和提前感謝。做日期轉換

SELECT 
    a.UserID_Caller ,a.csCallType,timewait,a.convotime,datename(quarter,timewait)as qrt,datename(year,timewait)as yr,datename(month,timewait)as mnth,datename(day,timewait)as dy 
     --sum(case when datename(year,timewait) = (datename(year,getdate()-1)) AND (datename(Quarter,timewait))=(datename(Quarter,getdate()-1)) and (datename(day,timewait))<>(datename(day,getdate()))then (a.convotime)/60 else 0 end) as [MTD] 
FROM satVRS.dbo.rptNECACallHistory as a 
WHERE 
     a.IsReport = 1 
    -AND (datename(year,timewait))=(datename(year,getdate()-1)) AND (datename(quarter,timewait))=(datename(quarter,getdate()-1)) and (datename(day,timewait))<>(datename(day,getdate())) 
    and month(timewait)  
    AND a.convotime > 0 
    AND a.NECA_isReport = 1   
    AND a.Video in ('SV') 

GROUP BY a.UserID_Caller ,a.csCallType,timewait,a.convotime 
order by timewait,a.UserID_Caller 
+0

您能否提供一些示例數據來說明您的季度到目前爲止的含義? –

+0

以下是一些示例數據,我將會以convotime的方式獲取每日總數,MTD,QTD和YTD – user3027644

回答

0

我假設你正在尋找查詢電話爲MTD,QTD和YTD

我注意到,你從GETDATE()減去1的列表... 通常,當你正在尋找MTD,QTD或YTD將與當前月份季度或年份有關。在所有情況下都是到今年。例如,如果您正在尋找2014年1月1日的MTD,那麼這將只包括2014年的1/1的呼叫。如果您在2014年3月1日之前查找QTD,它將包括1/1 - 3/1在2014年,因爲你可以看到這是不是3個月前的當前日期。最後,如果你正在尋找YTD爲2014年10月1日,你會尋求在2014年

所以MTD所有呼叫您的WHERE子句會是什麼樣子......

where 
    month(datefield) = month(getdate()) 
    and year(datefield) = year(getdate()) 

爲QTD您的WHERE子句會是什麼樣子......

where 
    datename(QUARTER,datefield) = datename(QUARTER,getdate() 
    and year(datefield) = year(getdate()) 

終於爲YTD您的WHERE子句會是什麼樣子......

where 
    year(datefield) = year(getdate()) 

我希望有所幫助。