我有一个从电子病历系统(EMRS)中提取的数据集[脂质]。在该EMRS中,医生命令从具有唯一订单号BUT的患者获取实验室血液图谱。使用不同的服务类型。因此,如果一个订单有4种服务类型,EMRS将在4行上记录事件(Order_no列中的相同[重复]订单号,BUT在Service_type列中使用不同的服务类型),如:
<表类>
Order_no
Service_type
结果
tbody><<tr>1 TC 230 1高密度脂蛋白 40 1TG 150 1低密度脂蛋白 90 表类>
使用下面的方法
select * from your_table
pivot (any_value(Result) for Service_type in ('TC', 'HDL', 'TG', 'LDL'))
如果事先不知道服务类型,可以在
下面使用execute immediate (select '''
select * from your_table
pivot (any_value(Result) for Service_type in (''' || string_agg(distinct "'" || Service_type || "'") ||
"))"
from your_table
)
您可以使用PIVOT
的例子:
WITH your_table AS
(
SELECT 1 AS Order_no, 'TC' AS Service_type, 230 AS Result
UNION ALL
SELECT 1, 'HDL', 40
UNION ALL
SELECT 1, 'TG', 150
UNION ALL
SELECT 1, 'LDL', 90
)
SELECT *
FROM your_table PIVOT(SUM(Result) FOR Service_type IN ('TC', 'HDL', 'TG', 'LDL'))