sql从一列中获取具有另一列名称的结果

时间:2016-01-19 14:26:54

标签: sql

对不起标题,我不确定如何说出我的问题。

我有3个表DescriptionEncounterPatient_NO ENCOUNTER_NO Problem_1 1 1 V707 1 2 V343 2 3 P567

信息

Problem_Description   Problem_Code
Cold                     V707
Knee Pain                V343
Headache                 P567

说明

Patient_NO ENCOUNTER_NO
1               1
1               2
2               3

遭遇

oninput

这是如何工作的,有人创建了一个遭遇,他们输入一个问题,然后它被保存到患者。病人可以多次遭遇。

我正在尝试选择Problem_1然后将其加入问题代码,但我希望它显示问题描述而不是实际代码本身。但我只希望它显示在特定遭遇中输入的问题。

如果这对任何人都有意义,或者我可以尝试更好地解释。

1 个答案:

答案 0 :(得分:0)

这适用于SQL Server,其他RDBMS应该类似......

DECLARE @Info TABLE(Patient_NO INT,ENCOUNTER_NO INT,Problem_1 VARCHAR(100));
INSERT INTO @Info VALUES
 (1,1,'V707')
,(1,2,'V343')
,(2,3,'P567');

DECLARE @Description TABLE(Problem_Description VARCHAR(100),Problem_Code VARCHAR(100));
INSERT INTO @Description VALUES 
 ('Cold','V707')
,('Knee Pain','V343')
,('Headache','P567');

DECLARE @Encounter TABLE(Patient_NO INT, ENCOUNTER_NO INT);
INSERT INTO @Encounter VALUES
 (1,1)
,(1,2)
,(2,3);

SELECT e.ENCOUNTER_NO 
      ,i.Patient_NO 
      ,i.Problem_1
      ,d.Problem_Description 
FROM @Encounter AS e
INNER JOIN @Info AS i ON e.Patient_NO=i.Patient_NO AND e.ENCOUNTER_NO=i.ENCOUNTER_NO
INNER JOIN @Description AS d ON i.Problem_1 = d.Problem_Code 

结果:

1   1   V707    Cold
2   1   V343    Knee Pain
3   2   P567    Headache