Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 server 2008 基于其他行条件显示行_Sql Server 2008 - Fatal编程技术网

Sql server 2008 基于其他行条件显示行

Sql server 2008 基于其他行条件显示行,sql-server-2008,Sql Server 2008,我希望根据后面的行条目显示sql表中名为parts的某些行。 请参阅下面的列表。我想在后面的一行中为每个特定模型和零件显示没有类0的行 Log | SourceTime| Class| model | part ----+-----------+------+-------+----- 614 | 14:14 | 0 | FORD | right wing 613 | 14:13 | 1 | FORD | right wing 612 | 14:12 |

我希望根据后面的行条目显示sql表中名为parts的某些行。 请参阅下面的列表。我想在后面的一行中为每个特定模型和零件显示没有类0的行

Log | SourceTime| Class| model | part
----+-----------+------+-------+-----
614 | 14:14     | 0    | FORD  | right wing 
613 | 14:13     | 1    | FORD  | right wing
612 | 14:12     | 1    | TOYOTA| left wing
611 | 14:11     | 0    | TOYOTA| right wing 
610 | 14:10     | 1    | TOYOTA| right wing 
609 | 14:09     | 0    | OPEL  | right lamp
608 | 14:08     | 1    | OPEL  | right lamp
607 | 14:07     | 1    | OPEL  | back right wheel 
606 | 14:06     | 0    | FORD  | right wheel
605 | 14:05     | 1    | FORD  | right wheel
应显示这两行

612 | 14:12     | 1    | TOYOTA| left wing
607 | 14:07     | 1    | OPEL  | back right wheel 
试试这个:同一张桌子上的多个CTE可以解决您的问题

WITH t1 AS(

         SELECT *,
                ROW_NUMBER() OVER (PARTITION BY LOG ORDER BY LOG) RN
         FROM TableName
),
t2 AS(

         SELECT *,
                ROW_NUMBER() OVER (PARTITION BY LOG ORDER BY LOG) RN
         FROM TableName
)
SELECT t1.*
FROM t1
WHERE Class <>  0 AND
      NOT EXISTS ( SELECT 1 
                   FROM t2 
                   WHERE t1.Model=t2.Model AND 
                         t2.Class = 0 AND 
                         t2.RN > t1.RN )   

它在SELECT t1.*行给我一个错误,表示列前缀“t1”与查询更新的Ans中使用的表名或别名不匹配。有额外的“不必要的”,“它在t1.Model=t2.Model上的给出错误。”。。它表示t2.Model无法绑定多部分标识符“t2.Model”。对于t2.Class和t2.rn也是一样,因为我非常确定上面的语法很酷,所以您是否尝试过使用精确的脚本。我必须按logID desc进行订购。如何修改它,使其只查看表中的最后200行?