在sql server 2005的遗留表中,我有像这样定义的可自定义数据网格的设置
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)
...
其中TotalColumn是0-5的整数,表示总计哪一列。我想要将这些数据转换为按照索引排序的列定义列表,而不是构建一个模型对象模型,如下所示
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; }
}
我想在不使用存储过程的情况下这样做。在过去,我使用cte完成数据操作,然后在视图中转动数据。我只是不确定如何将字段拆分成行而不执行类似
的操作SELECT
Column1Name,
Column1Type,
...
FROM
MyTable
UNION
SELECT
Column2Name,
...
有些东西告诉我必须有一个更好的方法,我只是不确定如何去做它
答案 0 :(得分:1)
听起来你想要做一个Pivot的反面 - 一个Unpivot!它们可能有些令人困惑,但我认为这就是你要找的东西。
来自MSDN's TSQL Pivot and Unpivot:
UNPIVOT通过旋转列执行与PIVOT相反的操作 将表值表达式转换为列值。