与列汇总但可能使用另一列

时间:2011-09-27 23:14:19

标签: sql sql-server-2005

我有这张桌子

campaignArchive

id   campaignID   bannerID   poolID   limitImpressions      actualImpressions
-----------------------------------------------------------------------------
1    496          10367      7        12500                 205
2    497          10367      7        12500                 22860
3    498          10367      7        12500                 1525

我需要总结迄今为止的实际展示次数,通常只是:

select sum(actualImpressions) as actuals from campaignArchive

但是,如果actualImpressions列值超过limitImpressions列值(如第2行),我希望使用limitImpressions列值。

希望这是有道理的。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:4)

您需要添加case声明。

select
    sum(case when actualImpressions > limitImpressions 
             then limitImpressions 
             else actualImpressions end) as actuals

from campaignArchive