34,590
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE [dbo].[table1](
[ID] [int] IDENTITY(1,1) NOT NULL,
[intention] [nvarchar](50) NULL,
[MatchesMan] [nvarchar](50) NULL,
[DeptName] [nvarchar](50) NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[table1] ON
GO
INSERT [dbo].[table1] ([ID], [intention], [MatchesMan], [DeptName]) VALUES (1, N'类型1', N'张三', N'一部')
GO
INSERT [dbo].[table1] ([ID], [intention], [MatchesMan], [DeptName]) VALUES (2, N'类型2', N'王五', N'一部')
GO
INSERT [dbo].[table1] ([ID], [intention], [MatchesMan], [DeptName]) VALUES (7, N'类型1', N'张三', N'一部')
GO
INSERT [dbo].[table1] ([ID], [intention], [MatchesMan], [DeptName]) VALUES (5, N'类型2', N'张三', N'一部')
GO
INSERT [dbo].[table1] ([ID], [intention], [MatchesMan], [DeptName]) VALUES (6, N'类型1', N'李四', N'二部')
GO
SET IDENTITY_INSERT [dbo].[table1] OFF
GO
declare @sql nvarchar(4000)
set @sql = 'select MatchesMan 名称'
select @sql = @sql + ',sum(isnull(case intention when '''+RTRIM(intention)+''' then 1 end,0)) as ['+RTRIM(intention)+']'
from (select distinct intention from table1) as a order by intention
select @sql = @sql+', sum(1) as 总计 from [table1] '
select @sql=@sql+' group by MatchesMan'
exec (@sql)
DECLARE @sql NVARCHAR(4000)
SET @sql = 'select MatchesMan 名称'
SELECT @sql = @sql + ',sum(isnull(case intention when ''' + RTRIM(intention)
+ ''' then 1 end,0)) as [' + RTRIM(intention) + ']'
FROM ( SELECT DISTINCT
intention
FROM table1
) AS a
ORDER BY intention
SELECT @sql = @sql + ', sum(1) as 总计 from [table1] '
SELECT @sql = @sql + ' group by MatchesMan'
DECLARE @sql1 NVARCHAR(4000)
SET @sql1 = 'select DeptName 名称'
SELECT @sql1 = @sql1 + ',sum(isnull(case intention when ''' + RTRIM(intention)
+ ''' then 1 end,0)) as [' + RTRIM(intention) + ']'
FROM ( SELECT DISTINCT
intention
FROM table1
) AS a
ORDER BY intention
SELECT @sql1 = @sql1 + ', sum(1) as 总计 from [table1] '
SELECT @sql1 = @sql1 + ' group by DeptName'
DECLARE @sql2 NVARCHAR(4000)
SET @sql2 = 'select ''总计'' 名称'
SELECT @sql2 = @sql2 + ',sum(isnull(case intention when ''' + RTRIM(intention)
+ ''' then 1 end,0)) as [' + RTRIM(intention) + ']'
FROM ( SELECT DISTINCT
intention
FROM table1
) AS a
ORDER BY intention
SELECT @sql2 = @sql2 + ', sum(1) as 总计 from [table1] '
EXEC (@sql+' UNION '+ @sql1 + ' UNION '+@sql2 )
SELECT MatchesMan AS 名称 ,
SUM(CASE WHEN intention = '类型1' THEN 1
ELSE 0
END) AS 类型1 ,
SUM(CASE WHEN intention = '类型2' THEN 1
ELSE 0
END) AS 类型2 ,
SUM(CASE WHEN intention = '类型1' THEN 1
ELSE 0
END) + SUM(CASE WHEN intention = '类型2' THEN 1
ELSE 0
END) AS 合计
FROM [table1]
GROUP BY MatchesMan
UNION
SELECT DeptName AS 名称 ,
SUM(CASE WHEN intention = '类型1' THEN 1
ELSE 0
END) AS 类型1 ,
SUM(CASE WHEN intention = '类型2' THEN 1
ELSE 0
END) AS 类型2 ,
SUM(CASE WHEN intention = '类型1' THEN 1
ELSE 0
END) + SUM(CASE WHEN intention = '类型2' THEN 1
ELSE 0
END) AS 合计
FROM [table1]
GROUP BY DeptName
UNION
SELECT '总计' AS 名称 ,
SUM(CASE WHEN intention = '类型1' THEN 1
ELSE 0
END) AS 类型1 ,
SUM(CASE WHEN intention = '类型2' THEN 1
ELSE 0
END) AS 类型2 ,
SUM(CASE WHEN intention = '类型1' THEN 1
ELSE 0
END) + SUM(CASE WHEN intention = '类型2' THEN 1
ELSE 0
END) AS 合计
FROM dbo.table1