繁体   English   中英

从两行到两列中选择数据作为输出mysql数据透视表

[英]selecting data from two rows into two columns as output mysql Pivot Table

我想从四个不同的表中选择一组数据,除一个表外,其他所有程序都运行顺利。

 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;

因此,我决定花时间解决问题,而不是再花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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM