ID ModuleID WhereFieldName WhereFieldValue ShowMsg
1 100 bCheck 0 共有 1 条未审核单据
2 100 bCheck 1 共有 3 条已审核单据
3 100 WriteTime 共有 1 条今天新增单据
4 101 bCheck 0 共有 9 条未审核单据
5 101 bCheck 1 共有 5 条已审核单据 我要显示成这个样子:ModuleID ShowMsg1 ShowMsg2 ShowMsg3
100 共有 1 条未审核单据 共有 3 条已审核单据 共有 1 条今天新增单据
101 共有 9 条未审核单据 共有 5 条已审核单据
1 100 bCheck 0 共有 1 条未审核单据
2 100 bCheck 1 共有 3 条已审核单据
3 100 WriteTime 共有 1 条今天新增单据
4 101 bCheck 0 共有 9 条未审核单据
5 101 bCheck 1 共有 5 条已审核单据 我要显示成这个样子:ModuleID ShowMsg1 ShowMsg2 ShowMsg3
100 共有 1 条未审核单据 共有 3 条已审核单据 共有 1 条今天新增单据
101 共有 9 条未审核单据 共有 5 条已审核单据
max(case when WhereFieldName = 'bCheck' and WhereFieldValue = 0 then ShowMsg else '' end) as ShowMsg1,
max(case when WhereFieldName = 'bCheck' and WhereFieldValue = 1 then ShowMsg else '' end) as ShowMsg2,
max(case when WhereFieldName = 'WriteTime' then ShowMsg else '' end) as ShowMsg3
from tb
group by ModuleID
固化了能不能根据WhereFieldName的不同和WhereFieldValue的不同 自动增加列数?就象上面的数据:
bCheck0 bCheck1 WriteTime (列名无所谓,只要能根据不同的WhereFieldName和WhereFieldValue)自动增加就行
... ... ...
... ... ...
100 共有 1 条未审核单据 共有 3 条已审核单据 共有 1 条今天新增单据
101 共有 9 条未审核单据 共有 5 条已审核单据
insert T select 1, 100, 'bCheck', 0, '共有 1 条未审核单据'
union all select 2, 100, 'bCheck', 1, '共有 3 条已审核单据'
union all select 3, 100, 'WriteTime', NULL, '共有 1 条今天新增单据'
union all select 4, 101, 'bCheck', 0, '共有 9 条未审核单据'
union all select 5, 101, 'bCheck', 1, '共有 5 条已审核单据' declare @sql nvarchar(4000)
set @sql='select ModuleID,'
select @sql=@sql+WhereFieldName+'等于'+case when WhereFieldValue is null then 'NULL' else rtrim(WhereFieldValue) end+'的时候=
max(case when isnull(WhereFieldName, '''')='+quotename(isnull(WhereFieldName, ''), '''') +' and isnull(WhereFieldValue, '''')='+
quotename(isnull(WhereFieldValue, ''), '''')+' then ShowMsg end),'
from T
group by WhereFieldName, WhereFieldValue
select @sql=left(@sql, len(@sql)-1), @sql=@sql+' from T group by ModuleID '
exec(@sql)--result
ModuleID bCheck等于0的时候 bCheck等于1的时候 WriteTime等于NULL的时候
----------- -------------------------------------------------- -------------------------------------------------- --------------------------------------------------
100 共有 1 条未审核单据 共有 3 条已审核单据 共有 1 条今天新增单据
101 共有 9 条未审核单据 共有 5 条已审核单据 NULL