SQL交叉表实例

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

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

 



交叉表语句的实现:

--用于:交叉表的列数是确定的

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

 

运行结果:



 

 
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
文章标签: sql sqlserver go null
个人分类: 数据库
想对作者说点什么? 我来说一句

sql实现交叉表的一个很好例子

2009年06月24日 1KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭