首页 新闻 赞助 找找看

奇怪的Sql Server2008内部处理机制

0
悬赏园豆:50 [已解决问题] 解决于 2012-01-07 15:37

Sql Server 中的distinct有什么奇怪的内部处理吗?见下图,第一个图正常,其他的都比较奇怪

 

 

有一种列相互之间串了的感觉,知道的讲解一下,谢谢,问题解决没问题,关键我想知道内部出了什么问题。

 

补充:我还有另外两个2010年和2011年的数据表,结构完全一样,没有上面的问题,纳闷啊。

dege301的主页 dege301 | 老鸟四级 | 园豆:2825
提问于:2012-01-06 14:15
< >
分享
最佳答案
0

SQL语句有错误啊,第一个第二个是对的啊,

第三个第四个是同一个问题,“年份”是nvarchar类型,你不能直接等于2009,2009是数字,

所以正确的SQL语句应该是这样的,你试试看:

select 年份, 月份, 法人代码
from [2009财务数据]
where 年份='2009'

我还有另外两个2010年和2011年的数据表,结构完全一样,没有上面的问题,是因为你的2009年财务数据里有脏数据,你查询一下,

select 年份, 月份, 法人代码
from [2009财务数据]
where 年份='z1'

z1就是脏数据,是没有办法转变成int型。所以就出错了。

收获园豆:30
NetSQL | 小虾三级 |园豆:1737 | 2012-01-06 16:12

表里面是没有脏数据的,所有年份列都是2009,你看到第二个截图的月份呢值了吗,表里面是没有这些值的,那个是后面某一列的数据,感觉在底层列串位了

dege301 | 园豆:2825 (老鸟四级) | 2012-01-06 16:31

第三四个语句因为我的表里面没有脏数据,所以直接在nvarchar和int间用等号是可以的,只是它“串列”了

dege301 | 园豆:2825 (老鸟四级) | 2012-01-06 16:32
其他回答(2)
0

Select 月份 from [2009财务数据] 怎么样

应该是数据出错了吧

DBCC CHECKDB, DBCC CHECKTABLE 运行下试试

收获园豆:15
ChatinCode | 园豆:2272 (老鸟四级) | 2012-01-06 15:11

Select 月份 from [2009财务数据]   是正常的,跟第一个查询一样的性质

支持(0) 反对(0) dege301 | 园豆:2825 (老鸟四级) | 2012-01-06 16:33

@dege301: 最后到底是什么原因啊

支持(0) 反对(0) ChatinCode | 园豆:2272 (老鸟四级) | 2012-01-10 13:15

@dege301: DBCC有没有检测出错误啊,这个得分也有点不明不白的。

支持(0) 反对(0) ChatinCode | 园豆:2272 (老鸟四级) | 2012-01-10 13:17
0

使用group by呢?有这个问题吗?

收获园豆:5
小小刀 | 园豆:1991 (小虾三级) | 2012-01-06 21:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册