Преобразуйте поля в строки без хранимой процедуры - PullRequest
1 голос
/ 10 мая 2011

В устаревшей таблице в 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,
...

Что-то подсказывает мне, что должен быть лучший путь, я просто не уверен, как это сделатьон

1 Ответ

1 голос
/ 10 мая 2011

Похоже, вы хотите сделать противоположность Pivot - Unpivot! Они могут несколько запутать, но я думаю, это то, что вы ищете.

С MSDN TSQL Pivot и Unpivot :

UNPIVOT выполняет операцию, противоположную PIVOT, вращая колонны табличного выражения в значения столбца.

...