我想printf()
只是collect_set()
患者編號中的前3位患者。使用printf函數在collect_set數組中打印有限數量的元素
A。我已創建 「patient_list」 使用collect_set
collect_set(distinct patient_seq) AS patient_list
其產生不同長度的患者編號的陣列(4,5或6位數字)
實施例:
["16189","26599","406622","419117","5551"]
["223587","224663","232072","326504","433430","436673","54540","58188","74118"]
乙。然後我剝出逗號和報價和(爲了搶只是第3個例,在接下來的步驟)由「*」分隔:
concat_ws('*', patient_list) AS pat_list
這產生:
16189*26599*406622*419117*5551
223587*224663*232072*326504*433430*436673*54540*58188*74118
Ç。我嘗試使用SUBSTRING_INDEX()
創建一個新變量(pat_list_short),其中只包含前3名患者,,但此功能在配置單元1.1.0(不支持,直到1.3.0)不支持。
substring_index(pat_list, '*', 3) AS pat_list_short
我還有什麼其他選擇?
我想使用%s將pat_list_short輸入到PRINTF中,以便僅打印評估團隊的前三個患者編號。由於患者NUM在長度上變化,我不能只是限制打印到一定長度
感謝
謝謝GoBrewers。使用print()是因爲我們有一段文本,其中pat_list_short只是需要打印的許多數據點之一以供客戶端審閱。我會嘗試trunc_array。我的工作圍繞昨天是做到以下幾點:SELECT商務 省 ,CONCAT_WS(」」,SORT_ARRAY(COLLECT_SET(patient_seq)))AS patseq_list FROM( SELECT DISTINCT商務 省 ,patient_seq ,ROW_NUMBER( )OVER(按商品分類,提供ORDER BY patient_seq)AS pat_seq_order FROM pat_table )a WHERE pat_seq_order <= 3 GROUP BY Biz,prov; – Jane