SQL从两个创建一个表,而不是union或join

时间:2011-06-14 20:05:00

标签: sql join union

我是SQL的新手,但到目前为止,我还没有找到任何关于此的内容,所以也许这是不可能的,但我想我会问。

我有两个表,我想创建一个表,使用一个作为模板,并将另一个的元素添加到反映第二个表的行信息的新列。所有这些都与记录ID相匹配。我不确定我是否描述得很好所以我希望这个例子有所帮助。

这两个表看起来像

记录ID ...所有者.....客户

....... 1 ............添........... HL ......

....... 2 ............乔恩........... JP ......

....... 3 ............埃文......... ...... JP

记录ID ...问题#.....问题回复

....... 1 ............ 65 ...........ÿ......

....... 1 ............ 68 ...........Ñ......

....... 2 ............ 65 ...........ÿ......

....... 2 ............ 68 ...........ÿ......

....... 3 ............ 68 ...........Ñ......

新表格如下:

记录ID ......所有者.....客户......问题65 ......问题68

....... 1 ............添........... HL .............. .Y ....................ñ

....... 2 ............乔恩........... JP .............. .Y .....................ÿ

....... 3 ............埃文......... JP ............ NULL ... ..............ñ

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

如果您只有Question65和Question68,那么您可以使用以下提到的查询。如果你从问题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

答案 2 :(得分:0)

真的,在应用程序代码中真的做得更好。但是,如果您坚持使用SQL,请查找数据透视表。一些示例页面:

http://www.simple-talk.com/sql/t-sql-programming/creating-cross-tab-queries-and-pivot-tables-in-sql/

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