Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Разворот таблицы  [new]
Stas43
Member

Откуда:
Сообщений: 6
Доброе время суток!

Помогите пожалуйста с реализацией разворота:

Вот такой запрос (представление)

SELECT R.UserDefinedRowId AS RowId,
F.FieldTitle AS Title,
D.FieldValue AS Value
FROM dbo.kmk_UserDefinedRows AS R LEFT OUTER JOIN
dbo.kmk_UserDefinedData AS D ON R.UserDefinedRowId = D.UserDefinedRowId
INNER JOIN dbo.kmk_UserDefinedFields AS F ON D.UserDefinedFieldId = F.UserDefinedFieldId
WHERE (R.ModuleId = 385) AND (F.FieldTitle = 'Дата' OR F.FieldTitle = 'Заголовок' OR
F.FieldTitle = 'Описание')

Возвращаемые данные (все, кроме первого столбца, текст):

1 Заголовок Текстовое поле заголовка
2 Заголовок Текстовое поле заголовка
3 Заголовок Текстовое поле заголовка
1 Описание Текстовое поле описания
2 Описание Текстовое поле описания
3 Описание Текстовое поле описания
1 Дата 2011-10-27T00:00:00
2 Дата 2011-10-22T00:00:00
3 Дата 2011-11-08T00:00:00

Хочется в виде:
RowID Дата Заголовок Описание
1 2011-10-27T00:00:00 Текстовое поле заголовка Текстовое поле описания
и т.д.

Спасибо заранее!
10 май 12, 11:37    [12528818]     Ответить | Цитировать Сообщить модератору
 Re: Разворот таблицы  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
Stas43,

https://www.sql.ru/faq/faq_topic.aspx?fid=731
10 май 12, 11:39    [12528831]     Ответить | Цитировать Сообщить модератору
 Re: Разворот таблицы  [new]
Stas43
Member

Откуда:
Сообщений: 6
Чего то по приведенному примеру не то получается:

Нужно: содержимое поля Title превратить в заголовки столбцов - их всего то 3

а в примере молоко и гвозди как были в одной колонке, так и остались :(
10 май 12, 12:44    [12529320]     Ответить | Цитировать Сообщить модератору
 Re: Разворот таблицы  [new]
aleks2
Guest
;with
Дата as(
SELECT R.UserDefinedRowId AS RowId,
 F.FieldTitle AS Title,
 D.FieldValue AS Value
FROM dbo.kmk_UserDefinedRows AS R LEFT OUTER JOIN
 dbo.kmk_UserDefinedData AS D ON R.UserDefinedRowId = D.UserDefinedRowId
 INNER JOIN dbo.kmk_UserDefinedFields AS F ON D.UserDefinedFieldId = F.UserDefinedFieldId
WHERE (R.ModuleId = 385) AND (F.FieldTitle = 'Дата')
 )
,
Заголовок as(
SELECT R.UserDefinedRowId AS RowId,
 F.FieldTitle AS Title,
 D.FieldValue AS Value
FROM dbo.kmk_UserDefinedRows AS R LEFT OUTER JOIN
 dbo.kmk_UserDefinedData AS D ON R.UserDefinedRowId = D.UserDefinedRowId
 INNER JOIN dbo.kmk_UserDefinedFields AS F ON D.UserDefinedFieldId = F.UserDefinedFieldId
WHERE (R.ModuleId = 385) AND (F.FieldTitle = 'Заголовок')
 )
select X.RowId, X.FieldValue as [Дата], Y.FieldValue as [Заголовок]
from Дата X inner join Заголовок Y
on X.RowId = Y.RowId
-- ну, 'Описание' ты уж сам присобачь
10 май 12, 13:05    [12529484]     Ответить | Цитировать Сообщить модератору
 Re: Разворот таблицы  [new]
Stas43
Member

Откуда:
Сообщений: 6
СПАСИБО! Пробую...
11 май 12, 09:44    [12534152]     Ответить | Цитировать Сообщить модератору
 Re: Разворот таблицы  [new]
Stas43
Member

Откуда:
Сообщений: 6
Все работает. Еще раз спасибо!
11 май 12, 10:34    [12534498]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить