2012-09-21 111 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