2017-03-19 73 views
-1

以下是我的查詢,它最後6個月的數據沒有正確返回,因爲我改變了我的日期時間格式。我想保持我的日期SQL datetime issue group by clause

select InventoryGroup, 
    ProjectId, 
    SubscriptionGuid, 
    SUM(extendedcost) as Cost, 
    RIGHT(CONVERT(varchar(10), [Date], 105), 7) as [YearMonth] 
from CostDetails 
group by InventoryGroup, 
    ProjectId, 
    SubscriptionGuid, 
    RIGHT(CONVERT(varchar(10), [Date], 105), 7) 
having InventoryGroup <> '' 
    and (
     RIGHT(CONVERT(varchar(10), [Date], 105), 7) > RIGHT(CONVERT(varchar(10), DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(m, - 6, GETDATE())), 0), 105), 7) 
     or RIGHT(CONVERT(varchar(10), [Date], 105), 7) = RIGHT(CONVERT(varchar(10), GETDATE() - 1, 105), 7) 
     ) 

的格式下面是我的電流輸出

enter image description here

+1

什麼期望的輸出? – hirokibutterfield

+2

爲什麼不讓表示層格式化日期? –

回答

1

只是猜測整個問題通過使用having條款,而不是where造成的。也許這將更好地工作:

select InventoryGroup, 
    ProjectId, 
    SubscriptionGuid, 
    SUM(extendedcost) as Cost, 
    RIGHT(CONVERT(varchar(10), [Date], 105), 7) as [YearMonth] 
from CostDetails 
where InventoryGroup <> '' and 
    [Date] > DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(m, - 6, GETDATE())), 0) 
group by InventoryGroup, 
    ProjectId, 
    SubscriptionGuid, 
    RIGHT(CONVERT(varchar(10), [Date], 105), 7) 

左了這一點,因爲這不就是以前的說法總是真(比過去6個月更新),如果它是昨天的一個月:

or RIGHT(CONVERT(varchar(10), [Date], 105), 7) = RIGHT(CONVERT(varchar(10), GETDATE() - 1, 105), 7)