Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不使用存储过程查询数据库_Sql_Sql Server_Reporting Services - Fatal编程技术网

Sql 不使用存储过程查询数据库

Sql 不使用存储过程查询数据库,sql,sql-server,reporting-services,Sql,Sql Server,Reporting Services,我有一个db图,如上图所示。 我需要做的是: 选择一个表,如下所示: PatientId,急诊。姓名或医生姓名,患者。地址 解释;我需要一个查询,该查询将返回患者详细信息,如果患者有急症,还将添加一个急症,如果没有,则将所有医生名称选为一行 例如: 因此,构建第一行是因为表patient中的EmergencyId为null,而第二行有一个EmergencyId 我需要这个查询来模拟这个。使用SSR 非常感谢 我无法真正调试或使用您的表来检查这一点,但这里有一个粗略的尝试,可以让您继续: SEL

我有一个db图,如上图所示。 我需要做的是: 选择一个表,如下所示: PatientId,急诊。姓名或医生姓名,患者。地址

解释;我需要一个查询,该查询将返回患者详细信息,如果患者有急症,还将添加一个急症,如果没有,则将所有医生名称选为一行

例如:

因此,构建第一行是因为表patient中的EmergencyId为null,而第二行有一个EmergencyId

我需要这个查询来模拟这个。使用SSR


非常感谢

我无法真正调试或使用您的表来检查这一点,但这里有一个粗略的尝试,可以让您继续:

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向导。不过,这应该会让事情进展顺利

  • 你能用你的数据来测试这个查询吗

  • 它是否返回所需的结果

编辑:

我刚才看到你的评论,说需要在一个单元格中垂直对齐多个值的布局。这将需要子查询,对我来说写出来太多了

谢谢,伙计们,你们至少能解释一下吗 告诉我如何单独返回此数据 行,以便我以后可以合并

我相信这将返回您想要分为不同行的数据,如果存在,则返回Emergency,如果不存在,则返回Drs。祝你好运

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函数构建要显示的字符串),要么使用使用返回数据创建的自定义列表覆盖表单上显示的内容。