Sql server 如果另一列按日期列包含2个值,请选择ID列
我有一张表,其结构如下: 我只想选择包含以下2个描述(已报告、已解决)的ID,但是,报告的ID必须在“已解决日期”之前Sql server 如果另一列按日期列包含2个值,请选择ID列,sql-server,Sql Server,我有一张表,其结构如下: 我只想选择包含以下2个描述(已报告、已解决)的ID,但是,报告的ID必须在“已解决日期”之前 因此,在上表示例中,当我运行查询时,我应该获得ID1,您可以执行聚合: select id from table t group by id where Descriptions in ('Reported', 'Resolved') having count(*) = 2 and max(case when Descriptions = 'Reported'
因此,在上表示例中,当我运行查询时,我应该获得ID1,您可以执行聚合:
select id
from table t
group by id
where Descriptions in ('Reported', 'Resolved')
having count(*) = 2 and
max(case when Descriptions = 'Reported' then date end) <
max(case when Descriptions = 'Resolved' then date end);
选择id
来自表t
按id分组
其中的描述('已报告','已解决')
计数(*)等于2且
最大值(描述=‘已报告’然后是日期结束时的情况)<
最大值(描述为“已解决”然后为日期结束时的情况);
您可以执行以下操作:
select id
from table t
group by id
where Descriptions in ('Reported', 'Resolved')
having count(*) = 2 and
max(case when Descriptions = 'Reported' then date end) <
max(case when Descriptions = 'Resolved' then date end);
选择id
来自表t
按id分组
其中的描述('已报告','已解决')
计数(*)等于2且
最大值(描述=‘已报告’然后是日期结束时的情况)<
最大值(描述为“已解决”然后为日期结束时的情况);
使用条件聚合:
select id
from tablename
group by id
having max(case when description ='Reported' then date end) < max(case when description = 'Resolved' then date end)
选择id
从表名
按id分组
最大值(描述为“已报告”时的情况,然后是日期结束)<最大值(描述为“已解决”时的情况,然后是日期结束)
只有当同一id的两个描述都存在且满足不等式时,HAVING
子句才会返回TRUE
如果其中任何一个缺失,结果将为
NULL
,并且id
将被过滤掉 使用条件聚合:
select id
from tablename
group by id
having max(case when description ='Reported' then date end) < max(case when description = 'Resolved' then date end)
选择id
从表名
按id分组
最大值(描述为“已报告”时的情况,然后是日期结束)<最大值(描述为“已解决”时的情况,然后是日期结束)
只有当同一id的两个描述都存在且满足不等式时,HAVING
子句才会返回TRUE
如果其中任何一个缺失,结果将为
NULL
,并且id
将被过滤掉 到目前为止你都尝试了什么,为什么不奏效?报告日期是否与解决日期相同?此外,这些日期似乎不完整,没有年份。你怎么知道2月5日不是2月6日之后?如果没有年份,如果您的日期是12月30日和1月02日,或者时间段超过一年,这将非常麻烦。@Larnu报告的日期和解决的日期可以在同一天,但是,日期列也包含时间,如下所示:2017-06-02 20:10:57.847到目前为止您尝试了什么,为什么不起作用?报告日期是否与解决日期相同?此外,这些日期似乎不完整,没有年份。你怎么知道2月5日不是2月6日之后?如果没有年份,如果您的日期是12月30日和1月02日,或者时间段超过一年,那么这将非常麻烦。@Larnu报告的日期和解决的日期可以在同一天,但是,日期列也包含时间,如下所示:2017-06-02 20:10:57.847谢谢您这一个也有效,count子句将其限制为仅存在2个条件实例的ID。不过,对于其他目的来说,这是一个很好的解决方案。谢谢。这个解决方案同样有效,count子句将其限制为仅存在2个条件实例的ID。然而,出于其他目的,这是一个很好的解决方案。