Короткий ответ - нет.Я сделал некоторое тестирование.Я дам вам код для игры, но из-за того, как NULL обрабатываются с помощью unpivot, вы потеряете непрерывный диапазон месяцев.Они могут быть добавлены обратно с помощью сводки, но для этого потребуется таблица чисел и т. Д. Слишком много для меня, чтобы сделать 5:02!=)
WITH datepivot
AS (SELECT title,
Convert(DATETIME, Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(datecol, 'Jan', '01-01'), 'Feb', '02-01'), 'Mar', '03-01'), 'Apr', '04-01'), 'May', '05-01'), 'Jun', '06-01'), 'Jul', '07-01'), 'Aug', '08-01'), 'Sep', '09-01'), 'Oct', '10-01'), 'Nov', '11-01'), 'Dec', '12-01')) datecol,
datecol origdatecol,
Isnull(code, 0) code
FROM (SELECT title,
[Jul-10],
[Aug-10],
[Sep-10],
[Oct-10],
[Nov-10],
[Dec-10],
[Jan-11],
[Feb-11],
[Mar-11],
[Apr-11],
[May-11],
[Jun-11]
FROM test) test UNPIVOT (code FOR datecol IN ([Jul-10], [Aug-10], [Sep-10], [Oct-10], [Nov-10], [Dec-10], [Jan-11], [Feb-11], [Mar-11], [Apr-11], [May-11], [Jun-11]))AS dateunpivot)
--SELECT * from datepivot --uncomment to view unpivoted data
SELECT *
FROM (SELECT title,
code,
origdatecol
FROM datepivot
WHERE datecol BETWEEN '10-01-2010' AND '04-01-2011') a PIVOT (Max(code) FOR origdatecol IN ([Jul-10], [Aug-10], [Sep-10], [Oct-10], [Nov-10], [Dec-10], [Jan-11], [Feb-11], [Mar-11], [Apr-11], [May-11], [Jun-11])) b