从DropDownList中减去值

时间:2014-02-24 02:51:48

标签: sql

我被一些SQL困扰如下

我有两个下拉列表,让用户选择日期,这里是SQL:

SELECT * FROM [CountTable] WHERE (([Date] = @Date) OR ([Date] = @Date2))

结果:

Date        UserID  Count
18/12/2013  User1   100
19/12/2013  User1   105
19/12/2013  User2   10

现在,我希望有一个SQL命令来计算两个Date之间的Count。 如果UserID相同,则新Count将减去旧Count。 如果在旧日期中找不到UserID,则它仍然是新的Count。

我想要的结果如下:

UserID   Counter
User1    5
User2    10

2 个答案:

答案 0 :(得分:1)

假设您要从@Date记录中减去@Date2记录,您可以执行以下操作:

SELECT 
  UserID,
  SUM(
    CASE
      WHEN [DATE] = @Date2 THEN Count
      ELSE -1*Count
    END
   ) AS Counter
FROM [CountTable]
WHERE (([Date] = @Date) OR ([Date] = @Date2))
GROUP BY UserID

答案 1 :(得分:0)

无论date1是在date2之前还是之后,这都应该有效(反之亦然):

select userid,
       sum(case
             when [ Date ] = @Date2 and @Date2 > @Date1 then
              [ Count ]
             when [ Date ] = @Date2 and @Date2 < @Date1 then
              - [ Count ]
             when [ Date ] = @Date1 and @Date1 > @Date2 then
              [ Count ]
             when [ Date ] = @Date1 and @Date1 < @Date2 then
              - [ Count ]
           end) as counter
  from [ CountTable ]
 where (([ Date ] = @Date) OR ([ Date ] = @Date2))
 group by userid