34,873
社区成员
发帖
与我相关
我的任务
分享declare @sql varchar(8000)
set @sql = 'select case when a.personid is null then ''总计'' else '''' end '
select @sql = @sql + ' , sum(case b.LevelName when ''' + LevelName + ''' then 1 else 0 end) [' + LevelName + ']'
from (select distinct LevelName from tablec) as a
set @sql = @sql + ', count(a.PersonID) as 总计 from tablea a join tablec b on a.Level=b.Levelid
where PersonID=''07'' and LogTime=''2011-8-25'' and Level=2
group by a.personid with rollup'
exec(@sql) create table [tableA]([Id] int,[PersonID] varchar(20),[Level] int,[LogTime] datetime)
insert [tableA]
select 1,'01',1,'2011-8-29' union all
select 3,'05',3,'2011-7-24' union all
select 7,'07',2,'2011-8-25'
--> 测试数据:[tableC]
if object_id('[tableC]') is not null drop table [tableC]
go
create table [tableC]([LevelId] int,[LevelName] varchar(6))
insert [tableC]
select 1,'级别一' union all
select 2,'级别二' union all
select 3,'级别三'
go
--------------开始查询--------------------------
declare @sql varchar(8000)
set @sql = 'select case when a.personid is null then ''总计'' else '''' end '
select @sql = @sql + ' , sum(case b.LevelName when ''' + LevelName + ''' then 1 else 0 end) [' + LevelName + ']'
from (select distinct LevelName from tablec) as a
set @sql = @sql + ', count(a.PersonID) as 总计 from tablea a join tablec b on a.Level=b.Levelid
where PersonID=''07'' and LogTime=''2011-8-25'' and Level=2
group by a.personid with rollup'
exec(@sql)
/*
级别二 级别三 级别一 总计
---- ----------- ----------- ----------- -----------
1 0 0 1
总计 1 0 0 1
(2 行受影响)
*/create table [tableA]([Id] int,[PersonID] varchar(20),[Level] int,[LogTime] datetime)
insert [tableA]
select 1,'01',1,'2011-8-29' union all
select 3,'05',3,'2011-7-24' union all
select 7,'07',2,'2011-8-25'
--> 测试数据:[tableC]
if object_id('[tableC]') is not null drop table [tableC]
go
create table [tableC]([LevelId] int,[LevelName] varchar(6))
insert [tableC]
select 1,'级别一' union all
select 2,'级别二' union all
select 3,'级别三'
go
--------------开始查询--------------------------
declare @sql varchar(8000)
set @sql = 'select isnull(a.personid,''总计'') '
select @sql = @sql + ' , sum(case b.LevelName when ''' + LevelName + ''' then 1 else 0 end) [' + LevelName + ']'
from (select distinct LevelName from tablec) as a
set @sql = @sql + ', count(a.PersonID) as 总计 from tablea a join tablec b on a.Level=b.Levelid
where PersonID=''07'' and LogTime=''2011-8-25'' and Level=2
group by a.personid with rollup'
exec(@sql)
/*
级别二 级别三 级别一 总计
-------------------- ----------- ----------- ----------- -----------
07 1 0 0 1
总计 1 0 0 1
(2 行受影响)
*/
--------------开始查询--------------------------
declare @sql varchar(8000)
set @sql = 'select isnull(a.personid,''总计'') '
select @sql = @sql + ' , sum(case b.LevelName when ''' + LevelName + ''' then 1 else 0 end) [' + LevelName + ']'
from (select distinct LevelName from tablec) as a
set @sql = @sql + ', count(a.PersonID) as 总计 from tablea a join tablec b on a.Level=b.Levelid
where a.PersonID=07 and a.LogTime=''2011-8-25'' and a.Level=2
group by a.personid with rollup'
exec(@sql)
declare @sql varchar(8000)
set @sql = 'select isnull(a.personid,''总计'') '
select @sql = @sql + ' , sum(case b.LevelName when ''' + LevelName + ''' then 1 else 0 end) [' + LevelName + ']'
from (select distinct LevelName from tablec) as a
set @sql = @sql + ', count(a.PersonID) as 总计 from tablea a join tablec b on a.Level=b.Levelid '
+'where a.PersonID=''07'' and a.LogTime=''2011-8-25'' and a.[Level]=2 group by a.personid with rollup'
exec(@sql)
if object_id('[tableA]') is not null drop table [tableA]
go
create table [tableA]([Id] int,[PersonID] varchar(20),[Level] int,[LogTime] datetime)
insert [tableA]
select 1,'01',1,'2011-8-29' union all
select 3,'05',3,'2011-7-24' union all
select 7,'07',2,'2011-8-25'
--> 测试数据:[tableC]
if object_id('[tableC]') is not null drop table [tableC]
go
create table [tableC]([LevelId] int,[LevelName] varchar(6))
insert [tableC]
select 1,'级别一' union all
select 2,'级别二' union all
select 3,'级别三'
--------------开始查询--------------------------
declare @sql varchar(8000)
set @sql = 'select isnull(a.personid,''总计'') '
select @sql = @sql + ' , sum(case b.LevelName when ''' + LevelName + ''' then 1 else 0 end) [' + LevelName + ']'
from (select distinct LevelName from tablec) as a
set @sql = @sql + ', count(a.PersonID) as 总计 from tablea a join tablec b on a.Level=b.Levelid where PersonID=07 and LogTime=''2011-8-25'' and Level=2
group by a.personid with rollup'
exec(@sql)
----------------结果----------------------------
/* 级别二 级别三 级别一 总计
-------------------- ----------- ----------- ----------- -----------
07 1 0 0 1
总计 1 0 0 1
(2 行受影响)
*/
declare @sql varchar(8000)
set @sql = 'select isnull(a.personid,''总计'') '
select @sql = @sql + ' , sum(case b.LevelName when ''' + LevelName + ''' then 1 else 0 end) [' + LevelName + ']'
from (select distinct LevelName from tablec) as a
set @sql = @sql + ', count(a.PersonID) as 总计 from tablea a join tablec b on a.Level=b.Levelid where PersonID=07 and LogTime=2011-8-25 and Level=2
group by a.personid with rollup'
exec(@sql)
declare @sql varchar(8000)
set @sql = 'select isnull(a.personid,''总计'') '
select @sql = @sql + ' , sum(case b.LevelName when ''' + LevelName + ''' then 1 else 0 end) [' + LevelName + ']'
from (select distinct LevelName from tablec) as a
set @sql = @sql + ', count(a.PersonID) as 总计 from tablea a join tablec b on a.Level=b.Levelid
where PersonID=07 and LogTime=2011-8-25 and Level=2 group by a.personid with rollup'
exec(@sql)