首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

数据列转行 请好手们指点指点哈

2013-06-19 
数据列转行请高手们指点指点哈创建表格的语句:CREATE TABLE [dbo].[Table_AA]([AA] [nchar](10) COLLATE C

数据列转行 请高手们指点指点哈


创建表格的语句:
CREATE TABLE [dbo].[Table_AA](
[AA] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[B1] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[B2] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[C1] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[C2] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]

INSERT INTO Table_AA(AA,B1,B2,C1,C2)VALUES('A','1','1','2','2')
INSERT INTO Table_AA(AA,B1,B2,C1,C2)VALUES('B','3','3','4','4')
INSERT INTO Table_AA(AA,B1,B2,C1,C2)VALUES('C','5','5','6','6')
INSERT INTO Table_AA(AA,B1,B2,C1,C2)VALUES('D','7','7','8','8')

查出的结果是这样的:
A  1  1
A  2  2
B  3  3
B  4  4
C  5  5
C  6  6
D  7  7
D  8  8

---------------------
有数据量比较大 所以 请考虑一下效率问题 ,union也可以 这个我会用 看看有没有其他的办法 高手们,sql2005版本的。

sql?行转列??列转行?效率?查询
[解决办法]

CREATE TABLE [dbo].[Table_AA](
    [AA] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
    [B1] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
    [B2] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
    [C1] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
    [C2] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
 
INSERT INTO Table_AA(AA,B1,B2,C1,C2)VALUES('A','1','1','2','2')
INSERT INTO Table_AA(AA,B1,B2,C1,C2)VALUES('B','3','3','4','4')
INSERT INTO Table_AA(AA,B1,B2,C1,C2)VALUES('C','5','5','6','6')
INSERT INTO Table_AA(AA,B1,B2,C1,C2)VALUES('D','7','7','8','8')


select AA,D1,D2
from
(select AA,B1 'D1',B2 'D2' from Table_AA 
 union all
 select AA,C1 'D1',C2 'D2' from Table_AA)  t
order by AA,D1,D2
 
/*
AA         D1         D2
---------- ---------- ----------
A          1          1         
A          2          2         
B          3          3         
B          4          4         
C          5          5         


C          6          6         
D          7          7         
D          8          8         

(8 row(s) affected)
*/


[解决办法]

select aa,b1,b2 from Table_AA
union all
select aa,c1,c2 from Table_aa
order by aa,b1

热点排行