我正在尝试编写一个查询来识别我的一个表。为了给人们制作不同的ids,我使用了名字,年龄和性别。然而在我的主表中,数据已被收集多年,性别代码从1表示男性,2表示女性,M表示男性,F表示女性。为了在我独特的个人表格中制作这个统一的表格,我使用了一个人行横道表将性别代码转换为正确的格式,然后将其放入不同的患者表格中。
我现在正在尝试编写查询以匹配不同的患者ID以及正确的主要行。表。问题是,现在一些人的性码已经改变了。我知道我可以在主表上使用更新语句,并将所有1和2更改为m和f。但是,我想知道是否有办法匹配旧的和新的性别代码,所以我不必进行更新。我不知道是否有办法在查询中加入主要和不同的ids表,同时使用性别代码表再次转换性别代码。以下是我目前使用的示例表。
这是我想要识别的主表
----------------------------
| Name | age | sex | Toy |
----------------------------
| Stacy| 30 | 1 | Bat |
| Sue | 21 | 2 | Ball |
| Jim | 25 | 1 | Ball |
| Stacy| 30 | M | Ball |
| Sue | 21 | F | glove |
| Stacy| 18 | F | glove |
----------------------------
性密码人行横道表
-------------------
| SexOld | SexNew |
-------------------
| M | M |
| F | F |
| 1 | M |
| 2 | F |
-------------------
这是我以前用来为我在主表中发现不同的人填充ID的表
--------------------------
| ID | Name | age | sex |
--------------------------
| 1 | Stacy| 30 | M |
| 2 | Jim | 25 | M |
| 3 | Stacy| 18 | F |
| 4 | Sue | 21 | F |
--------------------------
这就是我希望我的de table表格看起来像
---------------
| ID | Toy |
---------------
| 1 | Bat |
| 4 | Ball |
| 2 | Ball |
| 1 | Ball |
| 4 | glove |
| 3 | glove |
---------------
答案 0 :(得分:0)
select c.ID, a.Toy
from maintable a
left join sexcodecrosswalk b on b.sexold = a.sex
left join peopleids c on c.Name = a.Name and c.age = a.age and c.Sex = b.sexNew
这是一个有效的演示: http://sqlfiddle.com/#!3/a2d26/1