2015-10-07 40 views
1
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 

每2组连续的列现在输出应该以及如何编写动态查询。我已经通过传递参数,对上述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

查看正常化。 – Strawberry

回答

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。

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