gpt4 book ai didi

sql - 选择带有修剪行的计数

转载 作者:行者123 更新时间:2023-12-04 20:30:18 24 4
gpt4 key购买 nike

我有一个 MS SQL 数据库表,我在其中存储零件状态日志,即。硬件部分在某处发生了怎样的变化。

我需要为每个部分准确获取一行(按日期排序),然后计算所有行,其中 new_status 等于 2。

现在举个例子,我提出了这个查询:

Select part_sys_id, old_status, new_status, sys_created 
From Vhw_status_journal
Where i = 5
Order by sys_created desc

这让我明白了(注意 i 只是一个内部列):

part_sys_id | old_status | new_status | sys_created
-----------------------------------------------------------
21 | 2 | 3 | 2015-08-19 11:00:25
21 | NULL | 2 | 2015-08-19 10:59:28
20 | 1 | 2 | 2015-08-18 14:13:04
20 | 2 | 1 | 2015-08-17 10:51:03
20 | NULL | 2 | 2015-08-12 15:05:46

现在事实证明,当我只需要为每个 part_sys_id 获取最新条目时,我完全迷路了(我尝试了 Select Disctint 无济于事),然后甚至计算输出行,其中 new_status = 2.

我请求的输出是:

part_sys_id | old_status | new_status | sys_created
-----------------------------------------------------------
21 | 2 | 3 | 2015-08-19 11:00:25
20 | 1 | 2 | 2015-08-18 14:13:04

然后我需要计算 new_status = 2 的行数,即。然后我应该得到类似的东西:

count
-----
1

最佳答案

试试这个

 with cte
as
(
select row_number() over(partition by part_sys_id order by sys_created desc) as ri,part_sys_id, old_status, new_status, sys_created
from Vhw_status_journal
where i = 5
)

select count(*) from cte where ri=1 and new_status=2

关于sql - 选择带有修剪行的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32091793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com