![](/img/trans.png)
[英]How can I have a duplicated row to show only one row with the most recent updating of the the table in PostgreSQL?
[英]how to add asterics to row when one item in the row is duplicated and only show one row
我完全意識到這里的標題有點令人困惑,但這是我正在努力實現的目標。 我有一張重復的表。
桌子看起來像這樣。
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';
有人能指出我正確的方向嗎? 我只想確定在唱片上放一個星號的公仔,然后只選擇其中一個唱片。
Oracle 11g R2架構設置 :
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');
查詢1 :
SELECT check_num||decode(count(*), 1, null, '*') check_num, min(amount), min(invh_code)
from testcheck
group by check_num
order by check_num
結果 :
| CHECK_NUM | MIN(AMOUNT) | MIN(INVH_CODE) |
|-----------|-------------|----------------|
| 001* | 50 | 1123 |
| 002 | 100 | 1234 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.