首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请教查询下列表用SQL语句效率最快的查询语句是

2012-03-05 
请问查询下列表用SQL语句效率最快的查询语句是表员工姓名部门张三部门一李四部门二王三部门一张四部门三罗

请问查询下列表用SQL语句效率最快的查询语句是

员工姓名部门
张三部门一
李四部门二
王三部门一
张四部门三
罗三部门二
周四部门三
秦三部门一
周三部门二
高四部门一
用SQL语句效率最快查询出下列表的查询语句是:
员工姓名部门一部门二部门三
张三是
李四是
王三是
张四是
罗三是
周四是
秦三是
周三是
高四是

大家好,本人是初学希望能指点下小弟

[解决办法]
给个行列转换例子

SQL code
--建立测试环境Create Table 表(year varchar(10),name varchar(10),value varchar(10))--插入数据insert into 表select '2002','a','1' unionselect '2002','b','4' unionselect '2002','c','5' unionselect '2003','a','7' unionselect '2003','b','5' unionselect '2003','c','4' unionselect '2004','a','4'select * from 表--测试语句DECLARE @SQL VARCHAR(8000)SET @SQL='SELECT name'SELECT @SQL= @SQL+     ',sum(CASE WHEN year = ''' + year + ''' THEN value else 0  END) [' + year + ']'FROM (SELECT DISTINCT year FROM 表) ASET @SQL=@SQL+' FROM 表 GROUP BY name'exec (@SQL)  --删除测试环境Drop Table 表/*name   2002    2003    2004a    1    7    4b    4    5    0c    5    4    0*/
[解决办法]
SQL code
--> 测试数据: #Tif object_id('tempdb.dbo.#T') is not null drop table #Tcreate table #T (员工姓名 varchar(4),部门 varchar(6))insert into #Tselect '张三','部门一' union allselect '李四','部门二' union allselect '王三','部门一' union allselect '张四','部门三' union allselect '罗三','部门二' union allselect '周四','部门三' union allselect '秦三','部门一' union allselect '周三','部门二' union allselect '高四','部门一'godeclare @sql varchar(8000)set @sql='select 员工姓名'select @sql=@sql+',case when 部门='''+部门+''' then ''是'' else '''' end ['+部门+']'from #T group by 部门exec (@sql+' from #T')godrop table #T/*员工姓名 部门二  部门三  部门一  ---- ---- ---- ---- 张三             是李四   是         王三             是张四        是    罗三   是         周四        是    秦三             是周三   是         高四             是*/ 

热点排行