Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server:透视表_Sql Server_Pivot - Fatal编程技术网

Sql server SQL Server:透视表

Sql server SQL Server:透视表,sql-server,pivot,Sql Server,Pivot,有谁能帮我解决我的问题吗。。。感谢所有人,请将您的解决方案作为问题的答案发布-它可能会帮助其他人。 create PROC [dbo].[Sample] @fromDate datetime, @toDate datetime, @office varchar(30) AS declare @char varchar(200) DECLARE @Temp TABLE (ID int, Name varchar(50), Countt int, Reason varchar(20))

有谁能帮我解决我的问题吗。。。感谢所有人,请将您的解决方案作为问题的答案发布-它可能会帮助其他人。
create PROC [dbo].[Sample]    
 @fromDate datetime, @toDate datetime, @office varchar(30) 
AS 
declare @char varchar(200)
DECLARE @Temp TABLE (ID int, Name varchar(50), Countt int, Reason varchar(20))

INSERT INTo @Temp (ID, Name, Countt, Reason)
SELECT DD.ID, O.Name, Count(DD.Reason) Countt, convert(varchar,DD.Reason) Reason FROM samp1 AS DD       
INNER JOIN samp3 AS O ON O.ID = DD.ID

select  @char = coalesce(@char + ',', '') + reason from @Temp

select * 
FROM
(
    select  distinct ID, Name, Reason, sum(Countt) as Countt from @Temp group by Name, Reason, ID
)P

PIVOT
(
    SUM(Countt)
    FOR  Reason
    IN (select @char)
) AS pvt



Error: Msg 156, Level 15, State 1, Procedure Sample, Line 45
Incorrect syntax near the keyword 'select'.
SELECT @char = COALESCE(@char + ',[' + reason + ']', '[' + reason + ']')  
FROM @Temp  

DECLARE @pvtQuery VARCHAR(2500)  

SET @pvtQuery =  
'  
SELECT ID, Name, ' + @char + '  
FROM  
(  
    SELECT DISTINCT ID, Name, Reason, SUM(Countt) AS Countt  
    FROM @Temp  
    GROUP BY Name, Reason, ID  
) P  
PIVOT  
(  
    SUM(Countt)  
    FOR Reason  
    IN (' + @char + ')  
) AS pvt  
'  

EXEC (@pvtQuery)