2014-03-29 51 views
0

请帮我想出了情况的解决方案如下所解释的:在SQL Server中的数据复制行

ID name address   age  hobby  GPA 
--------------------------------------------------------- 
101 James 100 Garfield St  21  reading  3.13 
101 James 100 Garfield St  21  writing  2.63 
101 James 100 Garfield St  21  running  3.81 
109 Tom 19 Lily Ave   19  dating  3.54 
109 Tom 20 Lily Ave   19  climbing 2.76 
109 Tom 21 Lily Ave   19  watching 3.91 

我要的行集具有相同的ID复印(如101)和通过运行单个SQL查询为每个集分配一个州缩写。例如:增加规定CA,NJ,和DE到行与编号为101的ID,结果集,预计这个样子:

ID name address   age  hobby  GPA  state 
----------------------------------------------------------------------- 
101 James 100 Garfield St  21  reading  3.13  CA 
101 James 100 Garfield St  21  writing  2.63  CA 
101 James 100 Garfield St  21  running  3.81  CA 
101 James 100 Garfield St  21  reading  3.13  NJ 
101 James 100 Garfield St  21  writing  2.63  NJ 
101 James 100 Garfield St  21  running  3.81  NJ 
101 James 100 Garfield St  21  reading  3.13  DE 
101 James 100 Garfield St  21  writing  2.63  DE 
101 James 100 Garfield St  21  running  3.81  DE 

请记住,一切仍然以同样的方式,因为他们是在添加州缩写之前。同时假设我有三个以上的状态来添加并集成到查询中,比如说我拥有全部50个状态。提前感谢您的时间和精力!

+0

你尝试过什么?鉴于你的桌子没有正常化,以及你的问题的奇特性,我们可以认为这是作业吗?并不是说你不能在这里问作业问题,但你应该努力解决问题。至少,解释你所描述的输出需求背后的原因。 – Tony

回答

0

这应该产生的结果集:

select x.*, y.st 
from tbl x 
    join 
     (select 'CA' as st union all 
     select 'NJ' union all 
     select 'DE') y 
where x.id = 101 
0

用的ID创建新表和国家

ID ST 
101 CA 
101 NJ 
101 DE 
109 .. 

然后加入一个在你的桌子

SELECT t.*, s.st 
FROM tbl t 
JOIN states s ON t.id = s.id