我使用labview制作了自动测试GUI,用于测试我们的8通道设备。每次测试完成时,都会自动将8行添加到SQL Server表中,并且所有这8行都记录有相同的序列号。每次测试完成时,无论该序列号是否已经测试,都会添加8行。我想要做的是获取所有唯一序列号的最新数据(总是8行)。
到目前为止,我只能使用以下代码对单行输入测试执行此操作:
SELECT TestIndex
FROM dbo.TROSA_101_InitialTestingLD_AsicLpTest_CH
WHERE TestIndex IN (SELECT MAX(TestIndex) FROM dbo.TROSA_101_InitialTestingLD_AsicLpTest_CH GROUP BY SerialNumber)本质上,我只想删除重复的8行数据(每行对应一个测试),或者换句话说,为每个唯一的SerialNumber值获得最新的8行数据。
发布于 2019-07-04 12:49:04
我不完全理解您的业务逻辑,但是通过使用ROW_NUMBER,您的问题最后一句中的需求很容易实现
SELECT *
FROM
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY SerialNumber ORDER BY TestIndex DESC) rn
FROM dbo.TROSA_101_InitialTestingLD_AsicLpTest_CH
) t
WHERE rn <= 8;上面的查询将返回每个序列号的8个最新记录,其中" recent“表示最大的TestIndex值。
https://stackoverflow.com/questions/56880788
复制相似问题