如何在SQL中将行合并为一行并更改列名?

如何在SQL中将行合并为一行并更改列名?,sql,Sql,我需要SQL中的一个查询来将同一个表中的几行组合成一行,并且我还需要为每一列添加一些前缀,这样我就可以更容易地获得列值,但这里的关键是列名是动态的,因为用户可以向表中添加列 例如: 以下是我需要合并成一个的3个rown: id start_date due_date 2017 2014-03-17 2014-03-17 2018 2014-04-17 2014-04-17 2019 2014-05-17 2014-05-17 我需要的是: id_XXX s

我需要SQL中的一个查询来将同一个表中的几行组合成一行,并且我还需要为每一列添加一些前缀,这样我就可以更容易地获得列值,但这里的关键是列名是动态的,因为用户可以向表中添加列

例如: 以下是我需要合并成一个的3个rown:

id      start_date  due_date
2017    2014-03-17  2014-03-17
2018    2014-04-17  2014-04-17
2019    2014-05-17  2014-05-17
我需要的是:

id_XXX  start_date_XXX  due_date_XXX    id_YYY      start_date_YYY  due_date_YYY    id_ZZZ      start_date_ZZZ  due_date_ZZZ
2017    2014-03-17      2014-03-17      2018        2014-04-17      2014-04-17      2019        2014-05-17      2014-05-17
我提出了这个问题:

select tbl1.*, tbl2.*, tbl3.*
from
(
    select id, start_date, due_date
    from task_details
    where id = 2017
) tbl1
cross apply
(
    select id, start_date, due_date
    from task_details
    where id = 2018
) tbl2
cross apply
(
    select id, start_date, due_date
    from task_details
    where id = 2019
) tbl3
但我不知道如何在不手动指定所有列名的情况下为每个tbl设置不同的列名。。。
完全可以吗?

这有点像XY问题。你想要达到的最终结果是什么?我的意思是,一旦你得到一行,你对它的计划是什么?我想把它作为一个数据表,并把它作为一个数据源设置到GridView