同一零件有多行时需要查找零件数据

Need to lookup part data when there are multiple rows of the same part

我有一个 SQL Table,其中的零件带有自己的二维条形码。同一部分可能有多行。每行有一列带有 Date_Time 标记。

我需要的是获取最新的零件数据并查看其中一列以查看该值是否为 INT 1。

以下示例:查找“5”部分的最新时间戳并查看“PartStatusSt1”是否为“1”

enter image description here

enter image description here

这是我的查询:

"select * from [AppsData].[dbo].[OilPumpCoverTest] where [2DMatrix] like '" & HMIRuntime.Tags("2DMatrix").Read(1) & "'"

然后我需要查看列名称“PartStatusSt1”并将该 INT 值移动到 WinCC 变量,如下所述:

HMIRuntime.Tags("Sql_Station1_Status").Write
Recordset.Fields("PartStatusSt1").Value,1

上面的代码有效,但如果我有多行相同的零件(通过 2DMatrix),它会随机获取一行零件数据。我需要获取每个 Date_Time 邮票的最新数据。

注意:我的代码是通过 VBS 在 WinCC 中。

感谢您的帮助!

要获取最新的零件记录,我首先使用 RANK 根据时间戳为每个零件分配一个编号。例如,如果 A 部分有三个时间戳,则根据您的排序,每个记录将被分配为等级 1、2 和 3。我对我使用的零件号做了类似的事情。要获取零件的最新记录,您可以查询 all where rankval = 1.
下面的小样本...

SELECT  z.* 
FROM
(SELECT RANK() OVER(PARTITION BY PartNo, LotNumber ORDER BY DatePosted DESC) AS rankval                                                            , TagNo, PartNo, LotNumber, DatePosted FROM PartTable) AS z
--WHERE z.rankval = 1

然后您可以使用 case 语句或 where 子句来检查部件或部件状态。

"select top 1 * 
from [AppsData].[dbo].[OilPumpCoverTest] 
where [2DMatrix] like '" & HMIRuntime.Tags("2DMatrix").Read(1) & "' order by Date_Time desc "