TablePatient.Patient_ID(PK)
TableProviders.Encounter (joins to PK)
TableProviders.Provider_Type
TableProviders.Provider_ID
TableNames.Full_Name
TableNames.Provider_ID (joins to Table Names)
我想要一个查询,为每个Patient_IDs
提供Full_Name
所有提供商的Provider ID
。
大约有30 provider_types
。
我已经使用左连接大量左连接。这需要很长时间才能运行,我在想有一个我不知道的伎俩。
任何帮助?
答案 0 :(得分:0)
如果我理解您的意思,您只想将患者ID和提供者ID分组。提供者ID的全名是唯一的吗?
这应该是
SELECT TablePatient.Patient_ID,
TableProviders.Provider_ID,
TableNames.Full_Name
FROM TablePatient LEFT JOIN
TableProviders on TablePatient.Patient_ID = TableProviders.Encounter
LEFT JOIN
TableNames on TableNames.Provider_ID = TablerProviders.Provider_ID
group by TablePatient.Patient_ID,
TableProviders.Provider_ID,
TableNames.Full_Name
您可以按TableNames.Full_Name
进行分组,也可以选择First(TableNames.Full_Name)
,例如,如果提供商ID的全名确实是唯一的。
注意:我使用的是SQL服务器语法,Oracle可能存在差异。
答案 1 :(得分:0)
好的,我之前的回答根本不符合您的意思。您希望将每个Patient_ID
上的每个Full_name
轮换一个provider_type
每TABLE_PATIENT
个WITH TABLE_PATIENT AS
(
SELECT TablePatient.Patient_ID,
TableProviders.Provider_Type,
TableNames.Full_Name
FROM TablePatient LEFT JOIN
TableProviders on TablePatient.Patient_ID = TableProviders.Encounter
LEFT JOIN
TableNames on TableNames.Provider_ID = TableProviders.Provider_ID
group by TablePatient.Patient_ID,
TableProviders.Provider_Type,
TableNames.Full_Name
)
SELECT *
FROM TABLE_PATIENT
PIVOT
(
min(Full_name)
for Provider_type in ([type1], [type2],[type3])
) AS PVT
。我假设每个患者只有一种类型的提供者,而不是更多;如果更多,每个病人都会有一行以上,无论如何我认为这不可能。
这是我使用pivot的解决方案。第一部分是为了使其更容易理解,因此我在子查询中创建了一个名为TABLE_PATIENT
的表。
unit.l.func
所以function1 <- function(tvar, gam)
{ function(tvar, gam){ beta.G(tvar,gam) - 1/(1-deno[1])*(unit.l.func( tvar, gam)-1)*val[1]}
}
function2 <- function(tvar, gam)
{ function(tvar, gam){ beta.G(tvar,gam) - 1/(1-deno[2])*(unit.l.func( tvar, gam)-1)*val[2]}
}
每个患者只有很多行,每行有一个提供者,而枢轴将所有内容放在一行上。告诉我一些事情是否有效。
您需要在[type1],[type2]等中编写所需的每种类型。只需将它们放在[]中,不需要其他字符作为'或其他任何字符。
如果只放置某些类型,则查询不会显示其他类型的提供者。
告诉我某些事情是否有效。