用于将列转换为行的SQL查询

时间:2014-02-13 09:16:17

标签: sql sql-server

这是我的表

create table table1(action1 varchar(10),view1 varchar(10))

insert into table1 values('A1','VIEW'),('A1','EDIT'),('A2','VIEW'),('A3','VIEW'),('A3','EDIT')

我需要这样的输出!

action1 VIEW    EDIT
A1  VIEW    EDIT
A2  VIEW    NULL
A3  VIEW    EDIT

我尝试使用数据透视,但收到错误Msg 102, Level 15, State 1, Line 8 Incorrect syntax near '('.

3 个答案:

答案 0 :(得分:1)

   select * from table1
    pivot
    (
    max(view1)
    for view1 in([VIEW],[EDIT])
    )as piv;

See Demo

答案 1 :(得分:0)

使用PIVOT函数从sql查询中的行中获取列:

select action1,[VIEW] as 'VIEW' ,[EDIT] as 'EDIT' from table1
    pivot
    (
    max(view1)
    for view1 in([VIEW],[EDIT])
    )as piv;

答案 2 :(得分:0)

通过使用MAX()函数,您可以得到结果

SELECT action1,
   MAX( CASE view1 WHEN 'View' THEN view1 ELSE '' END ) ViewCol, 
   MAX( CASE view1 WHEN 'Edit' THEN view1 ELSE null END ) EditCol 
   FROM table1 
   GROUP BY action1