有一张表
字段:id(自动编号)
bigclassname(大类名称)
smallclassname(小类名称)
zhuanti(专题) eg: id(1,新闻,国内新闻,科技)
id(2,新闻,国内新闻,汽车) 其中有2条记录1,2他们共同的小类是相同的,只是专题不同,如何做到以下格式输出!
---------------------------------------------------------------
小类 专题1 专题2 国内新闻 科技 (记录1) 汽车(记录2)
-----------------------------------------------------------------
象这种效果:http://www.ucf5.com/gameclass.asp?fenquid=490&gameid=1
字段:id(自动编号)
bigclassname(大类名称)
smallclassname(小类名称)
zhuanti(专题) eg: id(1,新闻,国内新闻,科技)
id(2,新闻,国内新闻,汽车) 其中有2条记录1,2他们共同的小类是相同的,只是专题不同,如何做到以下格式输出!
---------------------------------------------------------------
小类 专题1 专题2 国内新闻 科技 (记录1) 汽车(记录2)
-----------------------------------------------------------------
象这种效果:http://www.ucf5.com/gameclass.asp?fenquid=490&gameid=1
smallclassname,
zhuanti
drop table tb
go
create table tb(id int,bigclassname varchar(10),smallclassname varchar(10),zhuanti varchar(10))
insert into tb values(1,'新闻','国内新闻','科技')
insert into tb values(2,'新闻','国内新闻','汽车') select a.小类,a.专题1,a.专题2 from
(
select bigclassname,smallclassname as 小类,max(case when zhuanti='科技' then '科技 (记录1)' end) as 专题1,
max(case when zhuanti='汽车' then '汽车 (记录2)' end) as 专题2
from tb
group by bigclassname,smallclassname
) a
--
try
drop table tb
if object_id('usp_get') is not null
drop proc usp_get
go
create table tb(id int,bigclassname varchar(10),smallclassname varchar(10),zhuanti varchar(10))
insert into tb values(1,'新闻','国内新闻','科技')
insert into tb values(2,'新闻','国内新闻','汽车')
insert into tb values(3,'新闻','山东新闻','财经')
insert into tb values(4,'体育','国内体育','篮球') go
-- usp_get '新闻','国内新闻'
create proc usp_get
(@bigclassname varchar(10),@smallclassname varchar(10))
as
begin
select a.zhuanti,identity(int,1,1) as id into # from
(select distinct zhuanti from tb where bigclassname=@bigclassname and smallclassname=@smallclassname) a
declare @sql varchar(8000)
set @sql='select bigclassname,smallclassname as 小类,'
select @sql=@sql+' max(case when zhuanti='''+a.zhuanti+''' then '''+a.zhuanti+'(记录'+cast(a.id as varchar(10))+')'' end) as 专题'+cast(a.id as varchar(10))+','
from
(
select id,zhuanti from #
) a
set @sql=substring(@sql,1,len(@sql)-1)
set @sql=@sql+' from tb group by bigclassname,smallclassname'
set @sql=@sql+' having bigclassname='''+@bigclassname+''' and smallclassname='''+@smallclassname+''''
exec(@sql)
drop table #
end
--
楼主看这个
我感觉这样才是正常的操作,你是在知道大类名和小雷鸣的情况下去找所有不同的专题的
执行他usp_get '新闻','国内新闻',看看效果