Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 server SQL Server查询结果需要在来自同一源表的同名两列中提供不同的值_Sql Server_Left Join - Fatal编程技术网

Sql server SQL Server查询结果需要在来自同一源表的同名两列中提供不同的值

Sql server SQL Server查询结果需要在来自同一源表的同名两列中提供不同的值,sql-server,left-join,Sql Server,Left Join,不确定我的标题是否有意义,但以下是我想做的。我试图编写一个查询,在结果中两次生成同一列,但第一列的值与第二列的值不同 例如,简而言之,表provider_mstr包含national_provider_id、provider_id和description列。Table Appoints包含person\u id和rendering\u provider\u id列。Table person包含primarycare\u prov\u name和primarycare\u prov\u id列。因

不确定我的标题是否有意义,但以下是我想做的。我试图编写一个查询,在结果中两次生成同一列,但第一列的值与第二列的值不同

例如,简而言之,表provider_mstr包含national_provider_id、provider_id和description列。Table Appoints包含person\u id和rendering\u provider\u id列。Table person包含primarycare\u prov\u name和primarycare\u prov\u id列。因此,我希望结果如下所示:

**primarycare_prov_name**     **national_provider_ip**     **description**     **national_provider_id**
     John Doe                        12345                    Rick Smith            56789
     Jane Doe                        25832                    Barb Johnson          82473
...
因此,我希望在第一个national_provider_id列中包含primarycare_prov_名称的national_provider_id,但在第二个national_provider_id列中包含呈现服务提供商id描述的national_provider_id

这是我的全部代码:

select 
person.person_nbr,
person.first_name,
person.middle_name,
person.last_name,
person.date_of_birth,
person.sex,
person.email_address,
person.address_line_1,
person.address_line_2,
person.city,
person.state,
person.zip,
person.home_phone,
person.day_phone,
person.alt_phone,
person.primarycare_prov_name,
provider_mstr.national_provider_id,
appointments.appt_date,
appointments.begintime,
appointments.appt_type,
appointments.appt_nbr,
appointments.details,
appointments.rendering_provider_id,
location_mstr.location_name,
provider_mstr.description,
provider_mstr.national_provider_id,
charges.cpt4_code_id
FROM person
LEFT JOIN patient
ON person.person_id=patient.person_id
LEFT JOIN appointments
ON person.person_id=appointments.person_id
LEFT JOIN location_mstr
ON appointments.location_id=location_mstr.location_id
LEFT JOIN provider_mstr
ON person.primarycare_prov_id = provider_mstr.provider_id
LEFT JOIN charges
ON person.person_id = charges.person_id
WHERE .....

那么,我需要做些什么来实现这一点呢?

您需要加入provider\u mstr表两次。一次用于为初级保健提供者提供第二次服务:

SELECT
  person.primarycare_prov_name,
  primarycare_provider.national_provider_id,
  rendering_provider.description,
  rendering_provider.national_provider_id
FROM person
LEFT JOIN appointments 
  ON person.person_id=appointments.person_id
LEFT JOIN provider_mstr rendering_provider 
  ON rendering_provider.provider_id = appointment.rendering_provider_id
LEFT JOIN provider_mstr primarycare_provider 
  ON primarycare_provider.provider_id = person.primarycare_prov_id