pivot:列中的行

时间:2017-09-19 15:02:49

标签: sql sql-server tsql pivot

-1 投票 我有一个返回

的查询
Id        Type     data         char
1111      date     1999-06-30   NULL
1111      name     NULL         James
1111      string1  NULL         Yes
1111      string2  NULL         No
2222      date     1965-07-09   NULL
2222      name     NULL         Chris
2222      string1  NULL         No
2222      string2  NULL         Yes

我会

Id       date          name   string1 string2
1111     1999-06-30    James  Yes     No
2222     1965-07-09    Chris  No      Yes

是否可以使用PIVOT sql函数获得该结果?

1 个答案:

答案 0 :(得分:1)

假设你不需要动态,一个简单的条件聚合应该可以做到这一点

Select ID
      ,date    = max(case when [type]='date'    then [data] end)
      ,name    = max(case when [type]='name'    then [char] end)
      ,string1 = max(case when [type]='string1' then [char] end)
      ,string2 = max(case when [type]='string2' then [char] end)
 From (
        -- Your Query or Table
      ) A
 Group By ID