sql - 同一零件存在多行时需要查找零件数据
问题描述
我有一个 SQL 表,其中包含带有自己的二维条码的部分。同一零件可能有多行。每行都有一个带有 Date_Time 标记的列。
我需要的是获取最新的零件数据并查看其中一列以查看该值是否为 INT 1。
下面的示例:查找“5”部分的最新时间戳,并查看“PartStatusSt1”是否为“1”
这是我的查询:
"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。我对我使用的零件编号做了类似的事情。要获取零件的最新记录,您可以查询所有 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 子句来检查部件或部件状态。
推荐阅读
- php - 登录时,Woocommerce 无法从 REST API 获取结果
- angular - ExpressionChangedAfterItHasBeenCheckedError:称为 Api 的角度更改数据
- mysql - 有条件地在 SELECT 语句中包含一列 - MYSQL
- python - python导入模块 - 我错过了什么?
- django - 在 django 中获取外键 id 时出错
- mysql - 为什么子查询中的 OR 会使查询慢得多?
- sql - 使用 Python 连接到 Jupyter Notebook 中的 SQL 数据库
- javascript - 在用户滚动到它们之前触发所有 `content-visibility: auto` 元素的渲染,而不会阻塞主线程超过 50 毫秒
- python - 如何只保留字符串中的某些字符
- sql-server - SQL Server 中的类型转换问题