选择数据从两行到两列作为输出mysql Pivot Table

时间:2016-11-27 05:42:44

标签: mysql

我想从四个不同的表中选择一组数据,除了一个表外,一切都运行顺畅。

 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;

1 个答案:

答案 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