我需要创建一个基于一系列SQL子查询生成的数据集。可以使用以下代码复制子查询的结果:
CREATE TABLE Table1
(`StayID` varchar(3), `IncidentOrder` int, `TxDetails` varchar(73))
;
INSERT INTO Table1
(`StayID`, `IncidentOrder`, `TxDetails`)
VALUES
('IP1', 1, 'Ward: A9999 - 01/01/2015 - 15:23'),
('IP1', 2, 'Consultant: Joe Bloggs Specialty :GERIATRIC MEDICINE - 02/01/2015 - 08:17'),
('IP1', 3, 'Discharge - 06/02/2015 - 16:40'),
('IP2', 1, 'Consultant: Joe Bloggs - 01/01/2015 - 09:02'),
('IP2', 2, 'Consultant: Joe Bloggs Specialty :GERIATRIC MEDICINE - 02/01/2015 - 12:56'),
('IP2', 3, 'Ward: A9999 - 02/01/2015 - 19:39'),
('IP2', 4, 'Consultant: Joe Bloggs - 05/01/2015 - 08:22'),
('IP3', 1, 'Ward: A9999 - 02/01/2015 - 04:58'),
('IP3', 2, 'Consultant: Joe Bloggs Specialty :GASTROENTEROLOGY - 02/01/2015 - 07:27'),
('IP3', 3, 'Consultant: Joe Bloggs - 05/01/2015 - 09:06'),
('IP3', 4, 'Ward: A9999 Consultant: Joe Bloggs - 05/01/2015 - 16:45'),
('IP3', 5, 'Ward: A9999 Consultant: Joe Bloggs - 05/01/2015 - 17:10'),
('IP3', 6, 'Ward: A9999 - 05/01/2015 - 18:14')
;
我需要产生如下结果:
列:StayID,Tx1,Tx2,Tx3,Tx。,Txn
为每个匹配的StayID和Txn列填充TransferDetails(基于IncidentOrder)。
IncidentOrder不是固定的,对于数据集中的每个StayID可能是10,30或1,因此静态数据透视不是一个选项。
我已尝试(并且失败)使用PIVOT生成所需的输出,并希望有人可以提供帮助。
提前致谢
答案 0 :(得分:0)
你有无数的事件吗? 您是否希望您的透视数据只包含实际存在的事件列?
如果您对这两个问题的回答都是“否”,我认为以下查询可能会对您有所帮助。
SELECT
STAYID,
DECODE(INCIDENTORDER,'1',TxDetails,NULL) AS Tx1,
DECODE(INCIDENTORDER,'2',TxDetails,NULL) AS Tx2,
DECODE(INCIDENTORDER,'3',TxDetails,NULL) AS Tx3,
.
.
DECODE(INCIDENTORDER,'n',TxDetails,NULL) AS Txn
FROM Table1
GROUP BY
STAYID;