我不确定一个合适的标题是什么,我希望这有效。
我在将行转换为具有特定表的列时遇到问题,并且在线找到了可能的解决方案。但是,我觉得我需要编辑此表以使我能够将行实际转换为列。
表格看起来有点像这样:
ID1 patientID patientname study_date echo_var
1 1234 Bob 01-01-2014 15
2 1234 01-01-2000 13
3 1234 Bob 08-08-2012 14
4 1234 Bob 13-02-2005 13
5 6625 Louie 12-11-2010 25
6 6625 08-10-1998 20
7 6625 Louie 19-04-2006 21
这是从电子病人系统自动收集的信息,通常每行包含更多变量,但我现在只对一个(echo-var)感兴趣。所有行代表特定的患者就诊。由于电子系统的变化,我使用的工具无法从旧记录中正确提取所有数据,这就是为什么某些名称没有正确填写的原因。看到他们的患者ID对于每个患者都是独一无二的,我可以手动填写姓名,但是大约有6000条记录,所以我希望这样做会更优雅。
但这并不是很麻烦,主要的是将行转换为列(见下文)。所以我在网上找到了解决问题的方法,但我觉得我受到了阻碍,因为每位患者的单独数据点并没有为每位患者编号,如下所示。我希望为每位患者编号为每个单独的数据点编号,因此第一次访问按时间顺序分别为每位患者编号为1,第二次访问为2,等等。
ID1 patientID patientname study_date echo_var echo_number
1 1234 Bob 01-01-2014 15 4
2 1234 Bob 01-01-2000 13 1
3 1234 Bob 08-08-2012 14 3
4 1234 Bob 13-02-2005 13 2
5 6625 Louie 12-11-2010 25 3
6 6625 Louie 08-10-1998 20 1
7 6625 Louie 19-04-2006 21 2
如果我有这个,我想我知道如何将行转换为列,这是我最终想要的,如下所示。
patientID echo_number1 study_date1 echo_var1 echo_number2 study_date2 echo_var2
1234 1 01-01-2000 13 2 13-02-2005 13
6625 1 08-10-1998 20 2 19-04-2006 21
日期没有行。 3及其各自的测量等。 我猜echo_number(x)变量并不重要,但日期和相应的测量值都是。
有谁知道正确的方法吗?正如我所提到的,我已经尝试过寻找这些特殊问题,但我找不到解决方案。如果有什么不清楚请告诉我。如果有人知道如何从第一个表到最后一个表(没有中间的步骤),那也可以。
非常感谢提前
使用类似于上面第二个的表格,我尝试了以下查询:
SELECT
[patientID],
"echo_number" & [echo_number] & "_" & "echo_var" AS [ValueID],
[echo_var] AS [ValueValue]
FROM [TABLENAME]
UNION ALL SELECT
[patientID],
"echo_number" & [echo_number] & "_" & "study_date" AS [ValueID],
[study_date] AS [ValueValue]
FROM [TABLENAME];
其次是:
TRANSFORM Sum(NEWQUERY.ValueValue) AS SumOfValueValue
SELECT NEWQUERY.patientID
FROM NEWQUERY
GROUP BY NEWQUERY.patientID
PIVOT NEWQUERY.ValueID