SQL - 基于多个条件的分组

时间:2013-05-28 14:23:40

标签: sql-server-2008 tsql group-by

我有一个包含以下列的表。它用于跟踪用户在其计算机上运行的软件应用程序的开始和结束日期。

UserID  StartDate  EndDate    AppName        AppCategory
001     1/1/2013   1/5/2013   MS Word        Office
001     1/1/2013   1/4/2013   MS Excel       Office
001     1/1/2013   1/4/2013   Visual Studio  Development
002     .......    ........   .............  .........

我想知道哪些用户在同一个应用程序类别中运行多个应用程序(同时)超过2天。

在上面的示例数据中,User 001在“Office”类别中运行Word和Excel,两个应用程序同时运行超过2天。

你会如何编写SQL查询?提前谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

Select Distinct UserId, AppName From table t
Where Datediff(day, startDate, EndDate) > 2
   And Exists
      (Select * From table
       Where userId = t.userId 
          And AppCategory = t.AppCategory
          And Datediff(day, startDate, EndDate) > 2
       Having Count(distinct Appname) > 1)