当前位置: 代码迷 >> Sql Server >> postgre 依据字段不同值统计相应值得个数(描述不清,看正文吧)
  详细解决方案

postgre 依据字段不同值统计相应值得个数(描述不清,看正文吧)

热度:136   发布时间:2016-04-24 20:50:02.0
postgre 根据字段不同值统计相应值得个数(描述不清,看正文吧)
意思是:一个表一个字段user,一个字段task_type 它的值为a的为5条记录,b的为6条记录,c的为7条记录。。。若干个人,会有不同任务类型任务a,b,c....怎么统计不同的人的不同任务类型的个数。。

最后得出的结果形式是:user     a    b     c   ,,,,
          
                      user_1   5    4     3
                      user_2   3    22    22
sql?? 分字段值统计数量 postgre

------解决方案--------------------


 if exists(select * from tempdb..sysobjects where id=object_id('tempdb..##tb_5'))
drop  table ##tb_5
DECLARE @s varchar(2000)
   SET @s='SELECT users'
  SELECT @s=@s
 +','+QUOTENAME(task_type)
          +N'=count(CASE task_type WHEN '+QUOTENAME(task_type,N'''')
          +N' THEN 1  END)'
          FROM userinfo
          GROUP BY task_type
    exec(@s+N'into ##tb_5 FROM userinfo group by users')
select * from ##tb_5


---usersinfo改成你的表名字
----users就是你的user字段
task_type-就是你的task_type 字段

------解决方案--------------------
CREATE TABLE #temp([user] VARCHAR(10), task_type VARCHAR(10))
INSERT #temp
SELECT 'user_1', 'a' UNION ALL
SELECT 'user_1', 'b' UNION ALL
SELECT 'user_2', 'c'

DECLARE @sql NVARCHAR(MAX), @Tasklist NVARCHAR(MAX)
SELECT @Tasklist = STUFF((SELECT DISTINCT ','+QUOTENAME(task_type) FROM #temp FOR XML PATH('')),1,1,'')