如何从同一个表中连续每两个列进行联合

时间:2015-10-07 11:05:24

标签: mysql

date1   tran_1   date2  tran_2    date3  tran_3 ..... date80  tran_80
may01   24       jun02   32       aug18    56   .....   sep10   44        
Sep01   24       Nov08   32       Jan18    56   .....   Jun18   44

现在输出应该是和如何编写动态查询..我已经通过传递参数编写了一个程序,对于上面的80个变量我必须调用程序大约40次,PLZ帮帮我

date    tran      type
may01   24        tran_1  
Sep01   24        tran_1
jun02   32        tran_2  
Nov08   32        tran_2       
aug18   56        tran_3 
Jan18   56        tran_3 
........................
........................
sep10  44        tran_80  
Jun18  44        tran_80  

1 个答案:

答案 0 :(得分:1)

一种方法是使用union all

select date, tran_1 as tran, 'tran_1' as type from t union all
select date, tran_2 as tran, 'tran_2' as type from t union all
select date, tran_3 as tran, 'tran_3' as type from t union all
. . .

我的建议是在电子表格中生成代码。只需生成数字1到80并使用电子表格功能。或者,如果您不想在。

中键入所有列名,则可以生成动态SQL

如果性能是一个问题,你有很多很多数据,还有其他方法。但是,这种类型的查询通常只运行一次,更有效的查询更难构建。