Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
507 views
in Technique[技术] by (71.8m points)

Error Msg 102, Level 15, State 1, Line 5 in SQL Server


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You must use delimited identifiers in the PIVOT statement, and in the SELECT list you use delimited identifiers to refer to the pivotted columns. Otherwise you're selecting numeric literals.

SELECT <non-pivoted column>,  
    [first pivoted column] AS <column name>,  
    [second pivoted column] AS <column name>,  
    ...  
    [last pivoted column] AS <column name>  
FROM  
    (<SELECT query that produces the data>)   
    AS <alias for the source query>  
PIVOT  
(  
    <aggregation function>(<column being aggregated>)  
FOR   
[<column that contains the values that will become column headers>]   
    IN ( [first pivoted column], [second pivoted column],  
    ... [last pivoted column])  
) AS <alias for the pivot table>  
<optional ORDER BY clause>;  

PIVOT

But while the docs specify [ and ] these are just regular delimited identifiers and you can also use " if QUOTED_IDENTIFIERS is ON.

So should be:

SELECT name, [1],[2],[3],[4],[5],[6],[7]
FROM (SELECT name,pd, din From  [BLD].[dbo].[MC20$]) sq
PIVOT 
( SUM(DIN) 
FOR pd IN ([1],[2],[3],[4],[5],[6],[7]) 
) AS pt 

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...