gpt4 book ai didi

sql - SQL查询确定状态?

转载 作者:行者123 更新时间:2023-12-04 21:25:31 26 4
gpt4 key购买 nike

我在MSSQL数据库中有一个表,如下所示:

Timestamp (datetime)
Message (varchar(20))


每天一次,特定进程将在启动时插入当前时间和消息“已启动”。完成后,它将插入当前时间和消息“完成”。

什么是一个好的查询或一组语句,在给定特定日期的情况下返回:


如果该进程从未开始,则为0
如果该过程已开始但尚未完成,则为1
2该过程是否开始和结束


该表中还有其他消息,但是“开始”和“完成”对于此过程是唯一的。

编辑:对于奖励因果报应,如果数据无效,则引发错误,例如,有两个“开始”消息,或者有一个“完成”而没有“开始”的消息。

最佳答案

Select Count(Message) As Status
From Process_monitor
Where TimeStamp >= '20080923'
And TimeStamp < '20080924'
And (Message = 'Started' or Message = 'Finished')


您可以对此稍作修改以检测无效条件,例如多次启动,完成,没有完成的启动等。

Select  Case When SumStarted = 0 And SumFinished = 0 Then 'Not Started'
When SumStarted = 1 And SumFinished = 0 Then 'Started'
When SumStarted = 1 And SumFinished = 1 Then 'Finished'
When SumStarted > 1 Then 'Multiple Starts'
When SumFinished > 1 Then 'Multiple Finish'
When SumFinished > 0 And SumStarted = 0 Then 'Finish Without Start'
End As StatusMessage
From (
Select Sum(Case When Message = 'Started' Then 1 Else 0 End) As SumStarted,
Sum(Case When Message = 'Finished' Then 1 Else 0 End) As SumFinished
From Process_monitor
Where TimeStamp >= '20080923'
And TimeStamp < '20080924'
And (Message = 'Started' or Message = 'Finished')
) As AliasName

关于sql - SQL查询确定状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/122088/

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