Нужна помощь T-SQL для преобразования строк из нескольких таблиц в столбцы со значениями в Sql Server 2005 - PullRequest
0 голосов
/ 02 марта 2012

У меня есть таблица tblUser:

tblUser

enter image description here

и таблица tblBCE и данные, приведенные ниже:

tblBCE

enter image description here

и мастер-таблица mstBCE, которая содержит текст метки для отображения в приложении переднего плана.Эта таблица содержит данные для другой вкладки, но в настоящее время я хочу только для tabType 'BCE', я сделаю для другой вкладки сам, как только я получил понятие.

mstBCE

enter image description here

Нет связи между таблицами tblBCE и mstBCE, нам нужно следовать только последовательности сверху вниз.

В приложении переднего плана я отображаю эти данные только по последовательности, т.е.

Я следую последовательности обеих таблиц, чтобы отображать данные, например, для метки «Отображение вкладки text111111 BCE» значение комментария должно быть comments111111, а для метки «Отображение вкладки text222222 BCE» должно быть «comments22222» и т. Д.

Во внешнем интерфейсе отображается, как указано ниже, для одного пользователя:

enter image description here

, поэтому на выходе будет.

Выход

enter image description here

Спасибо

1 Ответ

0 голосов
/ 04 марта 2012

Моя первая мысль - улучшить схему, и вам действительно нужно это сделать.

Чтобы упростить вопрос, похоже, вы хотите установить имя столбца на основе соединения с mstBCE.Вам не нужно отношение, потому что число столбцов в tblBCE фиксировано.Вместо этого используйте динамический sql для установки имен столбцов, выбранных из mstBCE, развернутых в одну строку.

DECLARE @sql nvarchar(4000); 
SELECT @sql = N'SELECT u.[username], u.[department], 
b.[Option1TB] as [' + pvt.[1] + N'], b.[Option1], 
b.[Option2TB] as [' + pvt.[2] + N'], b.[Option2], 
b.[Option3TB] as [' + pvt.[3] + N'], b.[Option3] 
FROM tblBCE as b 
JOIN tblUser as u ON b.[UserID] = u.[userid]; ' 
FROM (
    SELECT [tabconfigid], [tabdata] 
    FROM mstBCE 
    WHERE [tabType] = N'BCE'
) as m 
PIVOT ( MIN(m.[tabdata]) FOR m.[tabconfigid] IN ([1], [2], [3]) ) as pvt; 

EXEC (@sql); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...