微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获取最新序列错误的行?

如何解决如何获取最新序列错误的行?

目标是获取最新序列错误的行。示例数据如下,使用 Temptable 是因为它对进一步的交易很有用

enter image description here

这是我的查询

SELECT MAX(cc.[sequence]) [sequence],OrderID,OrderItemID
INTO #tmpErrorRecords
FROM [TMC].CVOrderCompletions cc
WHERE cc.[status] = 0
      AND LTRIM(RTRIM(ISNULL(errorMessage,''))) <> ''
GROUP BY cc.OrderID,cc.OrderItemID;

我的领导审查了上述查询并说,您在临时表中选择错误行的方式仍然存在错误。我已经修改了选择错误行代码,它应该如下所示。 但我想知道上面的和修改后的查询有什么区别?感谢有人能帮我解决这个问题

 SELECT MAX(cc.[sequence]) [sequence],OrderItemID
INTO #tmpOCRecords
FROM TMC.CVOrderCompletions cc
GROUP BY cc.OrderID,cc.OrderItemID;
SELECT cc.[sequence],cc.OrderID,cc.OrderItemID
INTO #tmpErrorRecords
FROM TMC.CVOrderCompletions cc
     INNER JOIN #tmpOCRecords tc ON(cc.OrderID = tc.OrderID
                                    AND cc.OrderItemID = tc.OrderItemID
                                    AND cc.[sequence] = tc.[sequence]
                                    AND LTRIM(RTRIM(ISNULL(cc.errorMessage,''))) != ''
                                    AND cc.STATUS = 0);

解决方法

您的潜在客户可以/应该告诉您的是,cc.[status] = 0 不会为显示的示例数据获取任何行...

什么定义了错误行? 它有一条错误消息。

这是您唯一需要的过滤器。不要把事情复杂化。

示例数据

(下次可以复制粘贴文本数据而不是图像,拜托!)

create table tmpErrors
(
  id int,orderId int,orderItemId int,sequence int,status int,errorMessage nvarchar(100)
);

insert into tmpErrors (id,orderId,OrderItemId,sequence,status,errorMessage) values
( 1,1136832,1,null),( 2,( 3,1142898,'Sql procedure ...'),( 4,( 5,2,( 6,3,( 7,1142904,( 8,1142910,'Invoice record ...'),( 9,(10,(11,1142916,null);

解决方案

select te.orderId,te.orderItemId,max(te.sequence) as sequence
from tmpErrors te
where te.errorMessage is not null
group by te.orderId,te.orderItemId;

结果

orderId orderItemId sequence
------- ----------- --------
1142898 1           3
1142910 1           2

Fiddle 查看实际情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。