SQL Создание одной таблицы из двух, а не объединение или объединение - PullRequest
0 голосов
/ 15 июня 2011

Я новичок в SQL, но до сих пор не смог ничего найти по этому поводу, так что, возможно, это просто невозможно, но я решил спросить.

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

Две таблицы будут выглядеть так:

ID записи ... Владелец ..... Клиент

....... 1 ............ Тим ........... HL ......

....... 2 ............ Джон ........... JP ......

.......3 ............ Эван ......... JP ......

ID записи ... Вопрос № .....Ответ на вопрос

....... 1 ............ 65 ........... Y ......

....... 1 ............ 68 ........... N ......

....... 2 ............ 65 ........... Y ......

.......2 ............ 68 ........... Y ......

....... 3 ............ 68 ........... N ......

И новая таблица будет выглядеть так:

Идентификатор записи... Владелец ..... Клиент .. Вопрос 65 ... Вопрос 68

....... 1 ............ Тим ........... HL ............... Y .................... N

....... 2 ............ Джон ........... ............... JP Y..................... Y

....... 3 ............ Эван ......... JP ............ NULL ................. N

Ответы [ 3 ]

3 голосов
/ 15 июня 2011

Я думаю, что вы ищете пивот.Проверьте здесь для деталей:

http://msdn.microsoft.com/en-us/library/ms177410.aspx
http://geekswithblogs.net/lorint/archive/2006/08/04/87166.aspx

1 голос
/ 15 июня 2011

Если у вас есть только Вопрос65 и Вопрос68, тогда вы можете использовать приведенный ниже запрос. если у вас есть вопросы, начиная с Вопроса 1 и вплоть до Вопроса 65, 66, 67 ... тогда вам лучше делать это в своем приложении, опорных точках или чем-то еще.

INSERT INTO NewTable
SELECT t1.RecordID, t1.owner, t1.Customer, t2.Question65, t2.Question68
FROM table1 t1 LEFT JOIN (
       SELECT q1.RecordID, q1.QuestionResponse AS Question65,
            q2.QuestionResponse AS Question68
       FROM Question q1 LEFT JOIN Question q2 ON 
                   q1.RecordID = q2.RecordID and q2.Question# = 68
       WHERE q1.Question# = 65 
   ) t2 
ON t1.RecordID = t2.RecordID
0 голосов
/ 15 июня 2011

Подобные вещи действительно, ДЕЙСТВИТЕЛЬНО лучше выполняются в коде приложения.Однако, если вы настаиваете на том, чтобы делать это с помощью SQL, посмотрите сводные таблицы.Некоторые примеры страниц:

http://www.simple -talk.com / sql / t-sql-программирование / создание запросов кросс-таблиц и сводных таблиц-в-sql /

http://www.bennadel.com/blog/496-SQL-Pivot-Tables-Are-Rockin-Awesome-Thanks-Rick-Osborne-.htm

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