Sql server 2008 基于其他行条件显示行
我希望根据后面的行条目显示sql表中名为parts的某些行。 请参阅下面的列表。我想在后面的一行中为每个特定模型和零件显示没有类0的行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 |
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行?