我想从四个不同的表中选择一组数据,除了一个表外,一切都运行顺畅。
ANS_ID REG_ID QST_ID ANS_value
4 1 11 M
5 1 12 12/02/1998
16 15 11 M
17 15 12 11/08/2005
28 16 11 F
29 16 12 05/18/2005
40 17 11 M
41 17 12 11/04/1980
52 18 11 M
我需要将此数据中的性别和生日作为行的最后两列,但是当我尝试将其包含时,我之前的所有行都会加倍,性别和生日会交替出现。
ATT_fname ATT_lname sex birthday
Kid1 Kid1Last M NULL
Kid1 Kid1Last NULL 11/8/2005
Kid2 Kid2Last F NULL
Kid2 Kid2Last NULL 5/18/2005
Adult1 Adult1Last M NULL
Adult1 Adult1Last NULL 11/4/1980
我想要的是:
ATT_fname ATT_lname sex birthday
Kid1 Kid1Last M 11/8/2005
Kid2 Kid2Last F 5/18/2005
Adult1 Adult1Last M 11/4/1980
当前代码:
Select ATT_fname, ATT_lname, ATT_email, concat(ATT_address, ' ', ATT_address2), ATT_city,
t4.STA_name, ATT_zip, ATT_phone,
case when QST_ID = 11 then ANS_value end as sex,
case when QST_ID = 12 then ANS_value end as birthday
FROM table1 t1
JOIN table2 t2
ON t1.ATT_ID = t2.ATT_ID
JOIN table3 t3
ON t3.REG_ID=t2.REG_ID
JOIN table4 t4
ON t4.STA_ID=t1.STA_ID
WHERE t2.EVT_ID = 9999;
答案 0 :(得分:0)
因此,我没有花费45分钟来尝试格式化(粘贴将是一个很好的选择),我决定花时间解决它。
只需要用两个不同的别名加入你的桌子,每个字段需要一个,即:
JOIN Table1 t1sex
ON t1sex.REG_ID=t2.REG_ID AND t1sex.QST_ID=11
JOIN Table1 t1birthday
ON t1birthday.REG_ID=t2.REG_ID AND t1birthday.QST_ID=12