Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL数据透视表列到行_Mysql_Sql_Pivot_Unpivot - Fatal编程技术网

Mysql SQL数据透视表列到行

Mysql SQL数据透视表列到行,mysql,sql,pivot,unpivot,Mysql,Sql,Pivot,Unpivot,我正在尝试转换此表: Date | Col1 | Col2 | Col3 | Col4 | Col5 | Col6 | Col7 | Col8 2015年2月15日|产品1 | MTD | 1 | 2 | 3 | 4 | 5 | 6 2015年2月15日|产品1 | QTD | 11 | 22 | 33 | 44 | 55 | 66 2015年2月15日|产品1 |年初至今| 111 | 222 | 333 | 444 | 555 | 666 为此: Date | Col1 | Type |

我正在尝试转换此表:

Date | Col1 | Col2 | Col3 | Col4 | Col5 | Col6 | Col7 | Col8
2015年2月15日|产品1 | MTD | 1 | 2 | 3 | 4 | 5 | 6
2015年2月15日|产品1 | QTD | 11 | 22 | 33 | 44 | 55 | 66
2015年2月15日|产品1 |年初至今| 111 | 222 | 333 | 444 | 555 | 666
为此:

Date | Col1 | Type | MTD | QTD | YTD
2015年2月15日|产品1 | Col3 | 1 | 11 | 111
2015年2月15日|产品1 | Col4 | 2 | 22 | 222
2015年2月15日|产品1 | Col5 | 3 | 33 | 333
2015年2月15日|产品1 | Col6 | 4 | 44 | 444
2015年2月15日|产品1 | Col7 | 5 | 55 | 555
2015年2月15日|产品1 | Col8 | 6 | 66 | 666
使用sql查询。
任何帮助都将不胜感激

可以通过许多工会来完成

select MTD.date,MTD.col1,MTD.type,MTD.val as MTD,QTD.val as QTD,YTD.val as YTD 
from(
    select 'col3' type,date,col1,col3 as val from yourtable where col2 = 'MTD'
    union all
    select 'col4' type,date,col1,col4 from yourtable where col2 = 'MTD'
    union all
    select 'col5' type,date,col1,col5 from yourtable where col2 = 'MTD'
    union all
    select 'col6' type,date,col1,col6 from yourtable where col2 = 'MTD'
    union all
    select 'col7' type,date,col1,col7 from yourtable where col2 = 'MTD'
    union all
    select 'col8' type,date,col1,col8 from yourtable where col2 = 'MTD'
) MTD inner join (
    select 'col3' type,date,col1,col3 as val from yourtable where col2 = 'QTD'
    union all
    select 'col4' type,date,col1,col4 from yourtable where col2 = 'QTD'
    union all
    select 'col5' type,date,col1,col5 from yourtable where col2 = 'QTD'
    union all
    select 'col6' type,date,col1,col6 from yourtable where col2 = 'QTD'
    union all
    select 'col7' type,date,col1,col7 from yourtable where col2 = 'QTD'
    union all
    select 'col8' type,date,col1,col8 from yourtable where col2 = 'QTD'
) QTD on MTD.date = QTD.date and MTD.col1 = QTD.col1 and MTD.type = QTD.type
inner join (
    select 'col3' type,date,col1,col3 as val from yourtable where col2 = 'YTD'
    union all
    select 'col4' type,date,col1,col4 from yourtable where col2 = 'YTD'
    union all
    select 'col5' type,date,col1,col5 from yourtable where col2 = 'YTD'
    union all
    select 'col6' type,date,col1,col6 from yourtable where col2 = 'YTD'
    union all
    select 'col7' type,date,col1,col7 from yourtable where col2 = 'YTD'
    union all
    select 'col8' type,date,col1,col8 from yourtable where col2 = 'YTD'
) YTD on MTD.date = YTD.date and MTD.col1 = YTD.col1 and MTD.type = YTD.type