|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
优化的SQL查询算法,有效地提高查询速度版权声明:CSDN是本Blog托管服务供应商。如本文扳连版权成绩,CSDN不承当相干义务,请版权具有者间接与文章作者接洽办理。
SQL交织表实例
很复杂的一个器材,见网上很多多少伴侣问“怎样完成交织表?”,以下是我写的一个例子,数据库基于SQLSERVER2000。
--======================================================
--交织表实例
--======================================================
建表:
在查询剖析器里运转:
CREATETABLE[Test](
[id][int]IDENTITY(1,1)NOTNULL,
[name][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
[subject][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
[Source][numeric](18,0)NULL
)ON[PRIMARY]
GO
INSERTINTO[test]([name],[subject],[Source])values(N张三,N语文,60)
INSERTINTO[test]([name],[subject],[Source])values(N李四,N数学,70)
INSERTINTO[test]([name],[subject],[Source])values(N王五,N英语,80)
INSERTINTO[test]([name],[subject],[Source])values(N王五,N数学,75)
INSERTINTO[test]([name],[subject],[Source])values(N王五,N语文,57)
INSERTINTO[test]([name],[subject],[Source])values(N李四,N语文,80)
INSERTINTO[test]([name],[subject],[Source])values(N张三,N英语,100)
Go
450)this.width=450"o:title="sql2">
交织表语句的完成:
--用于:交织表的列数是断定的
selectname,sum(casesubjectwhen数学thensourceelse0end)as数学,
sum(casesubjectwhen英语thensourceelse0end)as英语,
sum(casesubjectwhen语文thensourceelse0end)as语文
fromtest
groupbyname
--用于:交织表的列数是不断定的
declare@sqlvarchar(8000)
set@sql=selectname,
select@sql=@sql+sum(casesubjectwhen+subject+
thensourceelse0end)as+subject+,
from(selectdistinctsubjectfromtest)asa
select@sql=left(@sql,len(@sql)-1)+fromtestgroupbyname
exec(@sql)
go
运转了局:
450)this.width=450"o:title="sql">
提供用于管理、检查、优化数据库操作的管理工具。 |
|