將一對多關係顯示為唯一行(ID 和分隔清單)的欄位
此問題解決了轉換問題將具有一對多關係的表中的資料存入一個表中,該表的每一行都包含一個唯一的ID,單列包含表示資料的逗號分隔值許多價值。輸入資料的結構如下:
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(使用者定義的聚合(UDA))來實現此轉換)可以建立:
CREATE AGGREGATE group_concat WITH (INIT = gc_init, ITER = gc_iter, COMBINE = gc_comb, FINAL = gc_fini);
其中函數gc_init(), gc_iter(), gc_comb() 和gc_fini() 定義如下:
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;
然後可以在查詢中使用此UDA 來執行資料轉換:
SELECT id, group_concat(codes) FROM anonymous_table GROUP BY id;
此命令的輸出查詢將是所需的轉換資料。
以上是如何將 Informix SQL 中的一對多關係轉換為具有逗號分隔值的單行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!