在 NetSuite 保存的搜索中突出显示重复值

Highlight Duplicate Values in a NetSuite Saved Search

我正在寻找一种方法来突出显示 NetSuite 保存的搜索中的重复项。重复项位于名为 "ACCOUNT" 的列中,其中填充了文本值。

NetSuite 允许使用 SQL 服务器的精简版向搜索中添加字段(列)。它还允许使用相同的代码有条件地突出显示整行。但是我没有看到比较数据行之间值的明显方法。

虽然可以在摘要报告中将重复项归为一组并通过 2 或更多的计数来识别,但我想单独显示重复行并突出显示每行。

我发现的最接近的是一个计算 运行 总数的巧妙公式 here:

sum/* comment */({amount})
 OVER(PARTITION BY {name}
 ORDER BY {internalid}
 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

我想知道是否可以通过检查重复项的字段对结果进行排序,并调整此代码以识别 "ACCOUNT" 字段中某行与前一行之间的变化。

有什么想法吗?谢谢!

此 post 已编辑。我已将进展作为有关 NetSuite 的学习经验。

原始 - 普通 SQL 方式 - 不适合 NetSuite

这样的东西能满足您的需求吗?测试数据假定在 id1 和 id2 上查找重复项。 注意:这在 NetSuite 中不起作用,因为它支持有限的 SQL 功能。查看链接的评论。

declare @table table (id1 int, id2 int, value int);

insert @table values
(1,1,11),
(1,2,12),
(1,3,13),
(2,1,21),
(2,2,22),
(2,3,23),
(1,3,1313);
--select * from @table order by id1, id2;

select  t.*,
        case when dups.id1 is not null then 1 else 0 end is_dup     --identify dups when there is a matching dup record
from    @table t
left    join (  --subquery to find duplicates
        select  id1, id2
        from    @table
        group   by id1, id2
        having count(1) > 1
        ) dups
        on  dups.id1 = t.id1
        and dups.id2 = t.id2
order   by t.id1, t.id2;

第一次编辑 - NetSuite 目标但在 SQL.

这是一个 SQL 测试,基于问题中提供的示例可用语法,因为我没有 NetSuite 可以测试。这将使用类似的语法为每个重复行提供一个大于 1 的值。 注意:这将给出适当的答案,但在 NetSuite 中不会。

select  t.*,
        sum(1) over (partition by id1, id2)
from    @table t
order   by t.id1, t.id2;

第二次编辑 - 工作 NetSuite 版本

经过一番反复后,这里有一个适用于 NetSuite 的版本:

sum/* comment */(1) OVER(PARTITION BY {name})

这也会在任何重复的行上给出大于 1 的值。

说明

这是通过对分区中包含的每一行的值 1 求和来实现的。分区列应该是您认为重复的列。如果只有一列重复(例如用户 ID),则按上述方式使用。如果多个列重复(例如名字、姓氏、城市),则在分区中使用逗号分隔的列表。 SQL 将基本上按分区对行进行分组,并将 sum/* comment */(1) 中的 1 相加。问题中提供的示例对实际列求和。当分区中只有 1 个 ID 时,通过对 1 求和我们将得到值 1。任何更高的都是重复的。我想您可以将此字段称为重复计数。