У меня есть запрос T-SQL 2005, который возвращает:
pid propertyid displayname value
----------- ----------- --------------- ---------------
14270790 74 Low Price 1.3614
14270790 75 High Price 0
14270791 74 Low Price 1.3525
14270791 75 High Price 0
14270792 74 Low Price 1.353
14270792 75 High Price 0
14270793 74 Low Price 1.3625
14270793 75 High Price 0
14270794 74 Low Price 1.3524
14270794 75 High Price 0
То, что я хотел бы сделать, - это, по сути, поворот в поле displayname
, надеюсь, вы получите:
pid Low Price High Price
14270790 1.3614 0
14270791 1.3525 0
14270792 1.353 0
14270793 1.3625 0
14270794 1.3524 0
(Не уверен, как будет выводиться поле propertyid, поэтому я его опустил (надеялся, что оно просто расположится рядом с полями Low Price и High Price, чтобы указать их идентификаторы, но я не думаю, что это сработает.)
Проблема заключается в том, что содержимое исходного поля displayname
является динамическим - оно создается из соединения с PropertyName' table, so the number of pivoted columns is variable. It could therefore contain
High Price ,
Low Price ,
Open and
Close`, в зависимости ото том, что возвращает объединение с этой таблицей.
Конечно, относительно легко (независимо от проблемы, с которой я пишу первоначальный запрос!) создать этот стержень в фиксированном запросе или хранимом процессе.Однако возможно ли заставить LINQ сгенерировать SQL-запрос, в котором будет указан каждый столбец, а не записывать динамический (возможно, в хранимой процедуре) запрос, в котором перечислены имена столбцов?
Спасибо
Мат.