zhlinlin 发表于 2007-6-29 21:06:20

请教一个Sybase和MS sql 交叉表的区别问题

<p>有这样一段语句<br/>----创建测试数据<br/>if object_id('tbTest') is not null<br/>drop table tbTest<br/>GO<br/>create table tbTest(日期 int, 姓名 varchar(10),工作量 int)<br/>insert tbTest<br/>select 1991,'张三',1 union all<br/>select 1991,'张三',1 union all<br/>select 1991,'王五',1 union all<br/>select 1992,'张三',1 union all<br/>select 1992,'李四',1</p><p>----交叉汇总<br/>declare @sql varchar(8000)<br/>set @sql = 'select 日期'<br/>select @sql = @sql + ',' + 姓名 + '=sum(case 姓名 when ''' + 姓名 + ''' then 工作量 else 0 end)'<br/>from tbTest group by 姓名<br/>EXEC(@sql + ' from tbTest group by 日期')</p><p>----清除测试环境<br/>drop table tbTest</p><p><br/>在MS sql server中的结果是</p><p>/*结果<br/>日期&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 李四&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 王五&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 张三&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>----------- ----------- ----------- ----------- <br/>1991&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<br/>1992&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<br/>*/</p><p>但是在Sybase中的结果是</p><p>日期&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 李四&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>----------- ----------- <br/>1991&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>1992&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><p>这是为什么呢,怎样修改才能让在Sybase中的结果和在MS sql中的结果一样。</p>
页: [1]
查看完整版本: 请教一个Sybase和MS sql 交叉表的区别问题

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com