Sql 数据规范化:切换数据的列和行
我有一张这样的桌子:Sql 数据规范化:切换数据的列和行,sql,sql-server-2012,Sql,Sql Server 2012,我有一张这样的桌子: Table 1 ID Data 1 Name 2 Adam 3 SEX 4 Male 5 AGE 6 27 7 Name 8 Bob 9 SEX 10 Male 11 AGE 12 28 我想把它转换成以下格式 ID NAME SEX AGE 1 Adam Male 27 2 Bob Male 28 如何在Sql Server中执行此操作? 谢谢给你: insert in
Table 1
ID Data
1 Name
2 Adam
3 SEX
4 Male
5 AGE
6 27
7 Name
8 Bob
9 SEX
10 Male
11 AGE
12 28
我想把它转换成以下格式
ID NAME SEX AGE
1 Adam Male 27
2 Bob Male 28
如何在Sql Server中执行此操作?
谢谢给你:
insert into table2
select t1.Data "name", t2.Data "sex", t3.Data "Age"
from table1 t1,
table1 t2,
table1 t3
where (t1.ID + 4) % 6 = 0
and (t2.ID + 2) % 6 = 0
and t3.ID % 6 = 0
and t1.ID + 2 = t2.ID
and t1.ID + 4 = t3.ID
亚当男27
鲍勃男28
爱丽丝女99
我添加了一个额外的记录来再次检查它是否能在数据的前两次迭代之后工作。顺便说一句,您将无法使用PIVOT进行此操作,因为您的数据未规范化您从哪里获得t4和t6?@bc004346-t4和t6与您的t#s是同一来源。它们是性别和年龄专栏的来源。虽然您的方法代码较少,而且似乎可以工作,但您非常依赖以ID 1开头的行。我知道这是他的例子,但如果这个表不是一次性问题,有人意外地在任何地方添加了一行不符合精确的数值格式,您的查询将返回不正确的结果。另一方面,不管是谁否决了,请说明原因。哦,是的,我错过了下游部分-看不到滚动条。这是有道理的。我认为,考虑到这个问题,假设这些数据可能是从某个地方输入的,而OP不知道这些数据的编号有任何不规则之处是相当安全的;可能是重复的不,它不一样。这不是标准化数据;
insert into table2
select t1.Data "name", t2.Data "sex", t3.Data "Age"
from table1 t1,
table1 t2,
table1 t3
where (t1.ID + 4) % 6 = 0
and (t2.ID + 2) % 6 = 0
and t3.ID % 6 = 0
and t1.ID + 2 = t2.ID
and t1.ID + 4 = t3.ID