请教一个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/>日期 李四 王五 张三 <br/>----------- ----------- ----------- ----------- <br/>1991 0 1 2<br/>1992 1 0 1<br/>*/</p><p>但是在Sybase中的结果是</p><p>日期 李四 <br/>----------- ----------- <br/>1991 0 <br/>1992 1 </p><p>这是为什么呢,怎样修改才能让在Sybase中的结果和在MS sql中的结果一样。</p>
页:
[1]