【问题标题】:Combining two Time Interval queries组合两个时间间隔查询
【发布时间】:2011-11-09 11:22:17
【问题描述】:

我有一个名为 Call_Data 的表,数据如下所示:

Arr_Date                   Interval    Han_Time   SL_Time  
2011-03-16 18:39:31.000    1830        1200       245
2011-03-16 20:06:03.000    2000        261        85
2011-03-31 00:35:42.000    0030        1900       400
2011-03-31 02:13:06.000    0200        2000       350

现在我想知道 Han_time > 1800 和 SL_Time>300 的记录数

所以我写了两个查询来做到这一点:

  Select Arr_Date, Interval,
    Count(*) AS Han_Time_1800
    From Call_Data
    where Han_Time>1800
    Group by Arr_Date,Interval
    Order by Arr_Date,Interval

Select Arr_Date, Interval,
Count(*) AS SL_Time_300
From Call_Data
where SL_Time>300
Group by Arr_Date,Interval
Order by Arr_Date,Interval

有没有一种方法可以在一个查询中获取两个值?

【问题讨论】:

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


    【解决方案1】:
    select Arr_Date,
           Interval,
           sum(case when Han_Time > 1800 then 1 else 0 end) as Han_Time_1800,
           sum(case when SL_Time > 300 then 1 else 0 end) as SL_Time_300
    from Call_Data
    where Han_Time > 1800 or 
          SL_Time > 300
    group by Arr_Date, Interval
    order by Arr_Date, Interval 
    

    【讨论】:

      【解决方案2】:

      这不会有帮助吗:

      Select Arr_Date, Interval,
          Count(*) AS Han_Time_1800
          From Call_Data
          where Han_Time>1800
          and SL_Time>300
          Group by Arr_Date,Interval
          Order by Arr_Date,Interval
      

      【讨论】:

      • 如果 Han_time 是 1900 而 SL_time 是 250 怎么办
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 2014-07-12
      • 2023-02-21
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      相关资源
      最近更新 更多