我正在拉/查询表中的数据,我正在获取重复数据。我想在dup的值的末尾附加一个字符('A'和'B'。
以下是代码的片段:
while select count(recid) from amtExport
group by billOfLadingId
where amtExport.createddatetime1 >= utcDT
{
if (amtExport.RecId == 2)
{
while select amtExport1
where amtExport1.billOfLadingId == amtExport.billOfLadingId
{
info(amtExport1.billOfLadingId);
}
}
}
输出:
00232763
00232763
00232793
00232793
00232800
00232800
......
......
所以,我想在值的末尾追加一个字符,比如
00232763A
00232763B
00232793A
00232793B
00232800A
00232800B
.......
......
感谢您的帮助!
答案 0 :(得分:1)
足够简单......我注意到的一件事是你正在做RecId == 2
,但是如果有两个以上的重复,它们将被跳过。请考虑更改为RecId > 1
。
此外,没有错误检查,因此如果有超过26个重复,显然将使用Z
之后的Ascii字符。
AMTExport amtExport, amtExport1;
ASCII asciiLetter;
while select count(RecId) from amtExport
group by billOfLadingId
{
if (amtExport.RecId == 2) // Should this be .RecId > 1?
{
asciiLetter = 65; // Reset letter to 'A'
while select amtExport1
where amtExport1.billOfLadingId == amtExport.billOfLadingId
{
info(amtExport.billOfLadingId + num2char(asciiLetter));
asciiLetter++; // Increase the ascii letter
}
}
}
答案 1 :(得分:0)
我知道我很傻但是如果你只需要billOfLadingId
而没有来自amtExport的其他字段那么你就不必做第二个while select
:
while select billOfLadingId, count(recid) from amtExport
group by billOfLadingId
where amtExport.createddatetime1 >= utcDT
{
if (amtExport.RecId > 1)
{
/*
while select amtExport1
where amtExport1.billOfLadingId == amtExport.billOfLadingId
{
info(amtExport1.billOfLadingId);
}
*/
for (i = 1; i <= amtExport.RecId; i++)
{
info(amtExport1.billOfLadingId + num2char(64 + i));
}
}
}