Sql 不使用存储过程查询数据库
我有一个db图,如上图所示。 我需要做的是: 选择一个表,如下所示: PatientId,急诊。姓名或医生姓名,患者。地址 解释;我需要一个查询,该查询将返回患者详细信息,如果患者有急症,还将添加一个急症,如果没有,则将所有医生名称选为一行 例如: 因此,构建第一行是因为表patient中的EmergencyId为null,而第二行有一个EmergencyId 我需要这个查询来模拟这个。使用SSRSql 不使用存储过程查询数据库,sql,sql-server,reporting-services,Sql,Sql Server,Reporting Services,我有一个db图,如上图所示。 我需要做的是: 选择一个表,如下所示: PatientId,急诊。姓名或医生姓名,患者。地址 解释;我需要一个查询,该查询将返回患者详细信息,如果患者有急症,还将添加一个急症,如果没有,则将所有医生名称选为一行 例如: 因此,构建第一行是因为表patient中的EmergencyId为null,而第二行有一个EmergencyId 我需要这个查询来模拟这个。使用SSR 非常感谢 我无法真正调试或使用您的表来检查这一点,但这里有一个粗略的尝试,可以让您继续: SEL
非常感谢 我无法真正调试或使用您的表来检查这一点,但这里有一个粗略的尝试,可以让您继续:
SELECT P.PatientId, E.Name as 'EmergencyName', D.Name as 'DoctorName', P.Address
FROM Patient P
LEFT JOIN Emergency E ON P.EmergencyId=E.EmergencyId
LEFT JOIN PatientDoctor PD ON P.PatientID=PD.PatientId
LEFT JOIN Doctor D ON PD.DoctorId=D.DoctorId
ORDER BY P.PatientId, E.Name, D.Name, P.Address
而且,我不是SQL向导。不过,这应该会让事情进展顺利
- 你能用你的数据来测试这个查询吗
- 它是否返回所需的结果
SELECT Distinct Coalesce(E.Name, D.Name) as VariableColumn,
P.PatientId,
P.Address
FROM Patient P
LEFT JOIN Emergency E
ON P.EmergencyId=E.EmergencyId
LEFT JOIN PatientDoctor PD
ON P.PatientID=PD.PatientId
LEFT JOIN Doctor D
ON PD.DoctorId=D.DoctorId
你能解释一下你想让所有的dr名字都排在一行吗?上面显示的是一行中的三行,这在SQL Server中是不可能的。你想用逗号分隔这些名字吗?每个DR名称是否可以在单独的行中返回?另外,前端是否有什么东西正在使用此查询的结果?如果是这样,那么您可能需要更改这些结果的返回方式。我的第一个问题呢?不,我需要一个单元格中多个值垂直对齐的布局。SQL不适合在一个单元格中放置多行。您可能需要编写一个用户定义的函数,该函数采用与外部查询相同的参数并连接医生姓名。同样,SQL也进行了优化,以便在列中具有相同的数据。让第一行返回医生姓名,让第二行/第一列返回紧急情况姓名需要联合。我不是SSRS专家,但这也可以通过子报告(而不是UDF和联合)实现。不管是否有紧急情况,它都会返回紧急情况名称和Dr名称。它还为找到的每个医生返回一个单独的行。是的,正如编辑中所述,我不确定如何最好地将所有医生放在一个单元格中。您要么必须在SQL中编写一些外观奇怪的脚本(使用SQL函数构建要显示的字符串),要么使用使用返回数据创建的自定义列表覆盖表单上显示的内容。