Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL选择直到值=我的值_Sql_Sql Server - Fatal编程技术网

SQL选择直到值=我的值

SQL选择直到值=我的值,sql,sql-server,Sql,Sql Server,你好,我有这个问题。我正在尝试生成SQL命令,该命令将在状态为0时选择项目计数 Name | TimeStarted | Status Job1 | 210161 | 0 Job1 | 210160 | 0 Job1 | 210159 | 0 Job1 | 210158 | 1 Job1 | 210157 | 0 Job2 | 210156 | 1 Job2 | 2

你好,我有这个问题。我正在尝试生成SQL命令,该命令将在状态为0时选择项目计数

Name |   TimeStarted  | Status
Job1 |    210161      |   0
Job1 |    210160      |   0
Job1 |    210159      |   0
Job1 |    210158      |   1
Job1 |    210157      |   0
Job2 |    210156      |   1
Job2 |    210155      |   1
Job3 |    210154      |   1
在这个例子中,Select的结果应该是这样的

Name  | Job Count
Job1  |     3 
Job2  |     0

此脚本的要点是计算自上次成功启动以来失败作业的数量。感谢您的帮助

假设您有某种排序if id来指定排序:

select name, count(*) - 1
from table t
where t.id <= (select min(id) from table t2 where t2.name = t.name and t2.status <> 0)
group by name;
选择名称,计数(*)-1
来自表t

其中t.id假设您有某种排序if id来指定排序:

select name, count(*) - 1
from table t
where t.id <= (select min(id) from table t2 where t2.name = t.name and t2.status <> 0)
group by name;
选择名称,计数(*)-1
来自表t

其中t.id假设您有某种排序if id来指定排序:

select name, count(*) - 1
from table t
where t.id <= (select min(id) from table t2 where t2.name = t.name and t2.status <> 0)
group by name;
选择名称,计数(*)-1
来自表t

其中t.id假设您有某种排序if id来指定排序:

select name, count(*) - 1
from table t
where t.id <= (select min(id) from table t2 where t2.name = t.name and t2.status <> 0)
group by name;
选择名称,计数(*)-1
来自表t

其中t.id您可以尝试以下查询:

select t1.Name, count(t2.Name)
from (
  select Name, max(TimeStarted) as LastSuccessTime
  from TableX
  where Status = 1
  group by Name
) t1
left join TableX t2
on t1.Name = t2.Name
and t1.LastSuccessTime < t2.TimeStarted
group by t1.Name

演示:

您可以尝试以下查询:

select t1.Name, count(t2.Name)
from (
  select Name, max(TimeStarted) as LastSuccessTime
  from TableX
  where Status = 1
  group by Name
) t1
left join TableX t2
on t1.Name = t2.Name
and t1.LastSuccessTime < t2.TimeStarted
group by t1.Name

演示:

您可以尝试以下查询:

select t1.Name, count(t2.Name)
from (
  select Name, max(TimeStarted) as LastSuccessTime
  from TableX
  where Status = 1
  group by Name
) t1
left join TableX t2
on t1.Name = t2.Name
and t1.LastSuccessTime < t2.TimeStarted
group by t1.Name

演示:

您可以尝试以下查询:

select t1.Name, count(t2.Name)
from (
  select Name, max(TimeStarted) as LastSuccessTime
  from TableX
  where Status = 1
  group by Name
) t1
left join TableX t2
on t1.Name = t2.Name
and t1.LastSuccessTime < t2.TimeStarted
group by t1.Name



演示:

请用您正在使用的数据库标记您的问题。SQL表表示无序集。因此,表没有排序。对,您有一个排序标准?所有行都具有相同的
TimeStarted
值是否正常?我原以为
TimeStarted
会定义行的顺序。但是根据你的样本数据,看起来不是那样的。是的,那是我犯的错误。这只是样本数据。这些项目是按名称和开始时间排序的。请使用您正在使用的数据库标记您的问题。SQL表表示无序集。因此,表没有排序。对,您有一个排序标准?所有行都具有相同的
TimeStarted
值是否正常?我原以为
TimeStarted
会定义行的顺序。但是根据你的样本数据,看起来不是那样的。是的,那是我犯的错误。这只是样本数据。这些项目是按名称和开始时间排序的。请使用您正在使用的数据库标记您的问题。SQL表表示无序集。因此,表没有排序。对,您有一个排序标准?所有行都具有相同的
TimeStarted
值是否正常?我原以为
TimeStarted
会定义行的顺序。但是根据你的样本数据,看起来不是那样的。是的,那是我犯的错误。这只是样本数据。这些项目是按名称和开始时间排序的。请使用您正在使用的数据库标记您的问题。SQL表表示无序集。因此,表没有排序。对,您有一个排序标准?所有行都具有相同的
TimeStarted
值是否正常?我原以为
TimeStarted
会定义行的顺序。但是根据你的样本数据,看起来不是那样的。是的,那是我犯的错误。这只是样本数据。这些项目是按名称和开始时间排序的。Wll我有ID,但它们是varchar值,如“42D03061-0CB1-4D2E-80C2-5D7E9D894F77”,因此不能按ID排序。只有包含数字的值是获得时间戳值的作业时间和作业日期。我认为这是最好的解决方案。但是,子查询缺少以下条件:
和t2.name=t.name
@sstan。谢谢。Wll我有ID,但它们是varchar值,如“42D03061-0CB1-4D2E-80C2-5D7E9D894F77”,所以不能按ID排序。只有包含数字的值是获得时间戳值的作业时间和作业日期。我认为这是最好的解决方案。但是,子查询缺少以下条件:
和t2.name=t.name
@sstan。谢谢。Wll我有ID,但它们是varchar值,如“42D03061-0CB1-4D2E-80C2-5D7E9D894F77”,所以不能按ID排序。只有包含数字的值是获得时间戳值的作业时间和作业日期。我认为这是最好的解决方案。但是,子查询缺少以下条件:
和t2.name=t.name
@sstan。谢谢。Wll我有ID,但它们是varchar值,如“42D03061-0CB1-4D2E-80C2-5D7E9D894F77”,所以不能按ID排序。只有包含数字的值是获得时间戳值的作业时间和作业日期。我认为这是最好的解决方案。但是,子查询缺少以下条件:
和t2.name=t.name
@sstan。谢谢。谢谢。这正是我想要的。我编辑了我的答案,加入了戈登·林诺夫的问题的固定版本。我认为他的方法比我最初的答案更清晰。谢谢你,这正是我想要的。我编辑了我的答案,加入了戈登·林诺夫的问题的固定版本。我认为他的方法比我最初的答案更清晰。谢谢你,这正是我想要的。我编辑了我的答案,加入了戈登·林诺夫的问题的固定版本。我认为他的方法比我最初的答案更清晰。谢谢你,这正是我想要的。我编辑了我的答案,加入了戈登·林诺夫的问题的固定版本。我认为他的方法比我最初的答案更清晰。