Sql server 2005 不使用存储过程将字段转换为行

Sql server 2005 不使用存储过程将字段转换为行,sql-server-2005,tsql,view,pivot,common-table-expression,Sql Server 2005,Tsql,View,Pivot,Common Table Expression,在SQLServer2005中的一个旧表中,我有如下定义的可自定义数据网格的设置 TotalColumn (int, null) Column1Name (char(12), null) Column2Name (char(12), null) Column3Name (char(12), null) Column4Name (char(12), null) Column5Name (char(12), null) Column1Type (int, null) Column2Type (int

在SQLServer2005中的一个旧表中,我有如下定义的可自定义数据网格的设置

TotalColumn (int, null)
Column1Name (char(12), null)
Column2Name (char(12), null)
Column3Name (char(12), null)
Column4Name (char(12), null)
Column5Name (char(12), null)
Column1Type (int, null)
Column2Type (int, null)
...
public class LedgerColumn
{
    public int Index { get; set; }
    public bool IsVisible { get; set; }
    public string Name { get; set; }
    public LedgerColumnType ColumnType { get; set; }
    public bool IsTotaled { get; set; }
}
其中TotalColumn是一个0-5的整数,表示哪一列是总计的。我不想构建一个对象模型来模拟它,而是想将这些数据转换成一个列定义列表,按照它们的索引排序,如下所示

TotalColumn (int, null)
Column1Name (char(12), null)
Column2Name (char(12), null)
Column3Name (char(12), null)
Column4Name (char(12), null)
Column5Name (char(12), null)
Column1Type (int, null)
Column2Type (int, null)
...
public class LedgerColumn
{
    public int Index { get; set; }
    public bool IsVisible { get; set; }
    public string Name { get; set; }
    public LedgerColumnType ColumnType { get; set; }
    public bool IsTotaled { get; set; }
}
我希望这样做而不使用存储过程。在过去,我使用数据操作,然后在视图中透视数据。我只是不知道如何在不执行类似操作的情况下将字段拆分成行

SELECT
    Column1Name,
    Column1Type,
    ...
FROM
    MyTable

UNION

SELECT
    Column2Name,
...

有些事情告诉我必须有一个更好的方法,我只是不知道如何去做

听起来你想做一个相反的支点-一个反支点!它们可能有点让人困惑,但我想这就是你想要的

发件人:

UNPIVOT通过旋转柱执行与枢轴相反的操作 将表值表达式转换为列值


听起来你想做一个相反的支点-一个反支点!它们可能有点让人困惑,但我想这就是你想要的

发件人:

UNPIVOT通过旋转柱执行与枢轴相反的操作 将表值表达式转换为列值