SQL Server 2008 Вертикальные данные в горизонтальные

Я прошу прощения за то, что отправил еще один вопрос по этой теме, но я прочитал многие ответы на этот вопрос, и я не могу заставить его работать на меня.

У меня есть три таблицы, к которым мне нужно присоединиться и получить информацию. Одна из таблиц занимает всего 3 столбца и хранит данные по вертикали. Я хотел бы перенести эти данные в горизонтальный формат.

Данные будут выглядеть так, если я просто присоединюсь и потяну:

SELECT 
   a.app_id, 
   b.field_id, 
   c.field_name,
   b.field_value 
FROM table1 a
JOIN table2 b ON a.app_id = b.app_id
JOIN table3 c ON b.field_id = c.field_id  --(table3 is a lookup table for field names)

Результат:

app_id  |  field_id  |   field_name   |  field_value
-----------------------------------------------------
 1234   |    101     |    First Name  |     Joe  
 1234   |    102     |     Last Name  |     Smith
 1234   |    105     |       DOB      |   10/15/72
 1234   |    107     |  Mailing Addr  |   PO BOX 1234
 1234   |    110     |      Zip       |     12345      
 1239   |    101     |    First Name  |     Bob  
 1239   |    102     |     Last Name  |     Johnson
 1239   |    105     |       DOB      |   12/01/78
 1239   |    107     |  Mailing Addr  |   1234 N Star Ave
 1239   |    110     |      Zip       |     12456  

Вместо этого я хотел бы, чтобы это выглядело так:

app_id  |  First Name  |   Last Name   |    DOB    |   Mailing Addr   |  Zip
--------------------------------------------------------------------------
 1234   |    Joe       |     Smith     |  10/15/72 |   PO BOX 1234    | 12345     
 1239   |    Bob       |    Johnson    |  12/01/78 |  1234 N Star Ave | 12456 

Раньше я просто прибегал к поиску всех необходимых мне field_id в своих данных и создавал операторы CASE для каждого из них. Приложение, которое используют пользователи, содержит данные для нескольких продуктов, и каждый продукт содержит разные поля. Учитывая количество поддерживаемых продуктов и количество полей для каждого продукта (много, намного больше, чем приведенный выше базовый пример), требуется много времени, чтобы найти их и выписать огромные куски операторов CASE.

Мне было интересно, есть ли какой-нибудь чит-код для достижения того, что мне нужно, без необходимости искать field_ids и писать вещи. Я знаю, что функция PIVOT, вероятно, то, что я ищу, однако, я не могу заставить ее работать правильно.

Думаешь, вы, ребята, могли бы помочь?

Ответы на вопрос(3)

Ваш ответ на вопрос