Вертикальные и горизонтальные таблицы в SQL Server 2005 - PullRequest
1 голос
/ 10 ноября 2011

Пожалуйста, рассмотрите ситуацию, в которой есть две таблицы Body и File, в которых каждая запись первой содержит ноль или более соответствующих записей во второй:

BodyID | Body
-------------
1      | X
2      | Y

FileID | BodyID | File
------------------------
1      | 1      | A
2      | 1      | B
3      | 2      | C
4      | 2      | D
5      | 2      | E

Конечно, довольно легко объединить обе таблицы и получить что-то вроде

BodyID | FileID | Body | File
-----------------------------
1      | 1      | X    | A
1      | 2      | X    | B
2      | 3      | Y    | C
2      | 4      | Y    | D
2      | 5      | Y    | E

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

BodyID | Body | File1 | File2 | File3 | ...
-------------------------------------------
1      | X    | A     | B     | NULL  | ...
2      | Y    | C     | D     | E     | ...

, где каждый столбец заменяется NULL (или любым другим «значимым» значением), когда нет файлов. Проблема в том, что я не могу использовать ни D-SQL, ни курсоры. Может кто-нибудь помочь мне?

1 Ответ

2 голосов
/ 10 ноября 2011

всякий раз, когда вам нужно преобразовать строки в столбцы, используйте pivot. Вы можете искать в msdn pivot.

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