簡體   English   中英

當行中的一項被重復並且僅顯示一行時,如何在行中添加星號

[英]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';   

有人能指出我正確的方向嗎? 我只想確定在唱片上放一個星號的公仔,然后只選擇其中一個唱片。

SQL小提琴

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM