这里的标题有点令人困惑,我完全意识到,但这就是我想要完成的。我有一张表,其中有一列重复。
桌子看起来像这样。
create table testCheck (check_num varchar2(20), amount number(17,2), invh_Code varchar2(20))
它有这样的数据
INSERT INTO "TESTCHECK" (CHECK_NUM, AMOUNT, INVH_CODE) VALUES ('001', '50', '1123')
INSERT INTO "TESTCHECK" (CHECK_NUM, AMOUNT, INVH_CODE) VALUES ('001', '50', '1123')
INSERT INTO "TESTCHECK" (CHECK_NUM, AMOUNT, INVH_CODE) VALUES ('002', '100', '1234'
我想写一个查询,它会给我不同的 check_num,但在实际重复的项目上加上一个星号。
所以换句话说,这种情况下的预期结果看起来像这样。
"CHECK_NUM" "AMOUNT" "INVH_CODE"
"001*" 50 "1123"
"002" 100 "1234"
请注意,通过检查 001,我真的不在乎选择哪些列作为数量和 invh_code 何时重复。它必须是原始 dup 记录之一的一部分。
我已经能够获得独特的价值,但我不能做的是为我的一生弄清楚如何将星号放在那里。
这是我的查询。
with Checkquery as (
SELECT count(*) over (partition by CHECK_NUM order by CHECK_NUM ROWS UNBOUNDED PRECEDING ) thiscount, CHECK_NUM, AMOUNT, INVH_CODE
FROM TESTCHECK
group by
check_num,
AMOUNT,
INVH_CODE)
select check_num, amount,invh_Code from Checkquery where thiscount ='1';
有人可以指出我正确的方向。我只是想识别在记录上加上星号的重复,然后只选择其中一个记录。