0

我有以下数据库:

我的数据库

我想创建连续提供此信息的视图:

document_id    Creator    Manager    Special    Archive  

(Creator,Manager,Special,Archive) 是 AuthorityName 值

所以首先我创建了一个视图:

SELECT     dbo.DocumentAuthorities.DocumentId, dbo.DocumentAuthorities.AuthorityId,   dbo.Authorities.AuthorityName, dbo.Authorities.AuthorityLevel
FROM         dbo.DocumentAuthorities CROSS JOIN
                          dbo.Authorities

然后我尝试了这个:

 SELECT * FROM 
    (
    SELECT Documents.Id, AuthorityName.AuthorityId, AuthorityName.AuthorityName
    FROM AuthorityName CROSS JOIN Documents
     ) src 
     PIVOT
     ( 
        max(dbo.AuthorityName.AuthorityName) 
        FOR AuthorityName 
        IN ([Creator],[Director],[Special],[Archive])
      )

但我收到此错误:

消息 102,级别 15,状态 1,第 11 行 ')' 附近的语法不正确。

4

1 回答 1

2

试试这个:

您必须为数据透视表提供别名

SELECT * FROM 
(
SELECT Documents.Id, AuthorityName.AuthorityId, AuthorityName.AuthorityName
FROM AuthorityName CROSS JOIN Documents
 ) src 
 PIVOT
 ( 
    max(dbo.AuthorityName.AuthorityName) 
    FOR AuthorityName 
    IN ([Creator],[Director],[Special],[Archive])
  ) P -- < HERE
于 2012-10-09T10:50:18.403 回答