首頁 > 資料庫 > mysql教程 > 如何在 Informix SQL 中將一對多關係轉換為單獨的欄位?

如何在 Informix SQL 中將一對多關係轉換為單獨的欄位?

Barbara Streisand
發布: 2025-01-02 20:02:38
原創
1036 人瀏覽過

How to Transform a One-to-Many Relationship into Separate Columns in Informix SQL?

如何將一對多關係顯示為單獨的欄位

問題:

從格式就像:

id     codes

63592  PELL
58640  SUBL
58640  USBL
73571  PELL
73571  USBL
73571  SUBL
登入後複製

變成:

id     codes 

63592  PELL
58640  SUBL, USBL
73571  PELL, USBL, SUBL
登入後複製

解:

在Informix SQL 中使用使用者定義的聚合可以實現此目的

CREATE FUNCTION gc_init(dummy VARCHAR(255)) RETURNING LVARCHAR;
    RETURN '';
END FUNCTION;

CREATE FUNCTION gc_iter(result LVARCHAR, value VARCHAR(255))
    RETURNING LVARCHAR;
    IF result = '' THEN
        RETURN TRIM(value);
    ELSE
        RETURN result || ',' || TRIM(value);
    END IF;
END FUNCTION;

CREATE FUNCTION gc_comb(partial1 LVARCHAR, partial2 LVARCHAR)
    RETURNING LVARCHAR;
    IF partial1 IS NULL OR partial1 = '' THEN
        RETURN partial2;
    ELIF partial2 IS NULL OR partial2 = '' THEN
        RETURN partial1;
    ELSE
        RETURN partial1 || ',' || partial2;
    END IF;
END FUNCTION;

CREATE FUNCTION gc_fini(final LVARCHAR) RETURNING LVARCHAR;
    RETURN final;
END FUNCTION;

CREATE AGGREGATE group_concat
    WITH (INIT = gc_init, ITER = gc_iter,
          COMBINE = gc_comb, FINAL = gc_fini);
登入後複製

範例:

透過以下查詢將此聚合應用於範例資料:

SELECT id, group_concat(codes)
    FROM anonymous_table
    GROUP BY id;
登入後複製

將產生所需的結果輸出:

58640 SUBL,USBL
63592 PELL
73571 PELL,SUBL,USBL
73572 PELL,SUBL,USBL
登入後複製

以上是如何在 Informix SQL 中將一對多關係轉換為單獨的欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板