我想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