首页 > 解决方案 > 查询 SQL AND 运算符

问题描述

我有一个表包含多列......在一个名为Event的列中,如下所示

在此处输入图像描述

在上图中的最后一列(列名:事件)我应该为一个事件获取两条记录

事件记录的开始日期和结束日期。

string sql = "Select * From " + TableName+ " 
              where Date_Time in (
                (select Max(Date_Time) 
                FROM " + TableName + " 
                group by Event 
                having Event = 'Cooling'), 
                ( select Min(Date_Time) 
                FROM " + TableName + " 
                group by Event 
                having Event = 'Cooling')
            ) "

所以我通过上面的查询得到了两条冷却事件的记录。像这样,我也需要在一个查询中获取剩余事件。如何在其中附加其他事件条件?

标签: sqlsql-servertsql

解决方案


row_number您可以按如下方式使用分析功能:

select * from
(select t.*,
       row_number() over (partition by event order by date_time) as rn_i,
       row_number() over (partition by event order by date_time desc) as rn_d
  from your_table t) t
 where 1 in (rn_i, rn_d)

推荐阅读