2012-09-21 155 views
1

我想通過一個表格來運行並獲得mins列的總和但是它總是告訴我,mins是不是一個有效的列名SQL服務器SUM問題

SELECT 
    acs.cid, 
    DATEDIFF (n, acs.StartTime, acs.EndTime) as prepromomins, 
    CASE 
     WHEN (p.multiplier is null) THEN DATEDIFF (n , acs.StartTime, acs.EndTime) 
     ELSE (DATEDIFF (n , acs.StartTime , acs.EndTime) * p.multiplier) 
    END AS mins 
FROM 
    activecards as acs 
    LEFT JOIN Promotions as p 
    ON acs.StartTime > p.StartTime and acs.EndTime < p.EndTime 
+4

您可以向我們展示您試圖對'分鐘'執行SUM的查詢嗎? – WojtusJ

+1

這是您的完整查詢嗎?請向我們展示完整的查詢和有問題的表格模式。 –

+4

'DATEDIFF(分鐘,acs.StartTime,acs.EndTime)* COALESCE(p.multiplier,1)'將完全消除對'CASE'表達式的需要。 –

回答

0

試試這個:

SELECT SUM(DATEDIFF(n, acs.StartTime, acs.EndTime) * ISNULL(p.multiplier,1)) AS TotalMins 
FROM activecards as acs 
LEFT JOIN Promotions as p 
ON acs.StartTime > p.StartTime and acs.EndTime < p.EndTime 
+0

這個工作,我不得不acs.cid添加到該字段的選擇和組,以顯示每個獨特的cid的總數 – cobra2599