Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 行值作为列,并获取计数_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

Sql 行值作为列,并获取计数

Sql 行值作为列,并获取计数,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我有一个具有以下结构和数据的表AreaTable: Username Area Counter ----------------------------- Pravin Vskp 1 anil Hyd 3 Pravin Chennai 3 Ang Vskp 1 anil Vskp 3 Immi Chennai 3 现在,我希望数据显示为: VS

我有一个具有以下结构和数据的表
AreaTable

Username    Area    Counter
-----------------------------
Pravin  Vskp       1    
anil    Hyd        3    
Pravin  Chennai    3
Ang     Vskp       1    
anil    Vskp       3    
Immi    Chennai    3
现在,我希望数据显示为:

        VSKP    HYD   CHENNAI   
Pravin    1      0      3   
Anil      3      3      0
Ang       1      0      0    
Immi      0      0      3
我试着回答这个问题

SELECT *
FROM (  SELECT username, area,counter
        FROM AreaTable) AS ET
PIVOT(MIN(counter) FOR username IN (area) AS PT
你能帮我一下吗?

你应该使用:

此查询的结果是

注意,如果
[Area]
列中不同值的计数不同,您应该检查动态轴是如何生成的。SO中有很多答案。

试试这个

select username,[VSKP],[HYD],[CHENNAI] from
(select username,area,counter from @t) as src
pivot( 
min(Counter) for Area in([VSKP],[HYD],[CHENNAI])
) as pvt
select username,[VSKP],[HYD],[CHENNAI] from
(select username,area,counter from @t) as src
pivot( 
min(Counter) for Area in([VSKP],[HYD],[CHENNAI])
) as pvt