首页 新闻 会员 周边 捐助

sql 使用count函数会报字段转换错误??

0
悬赏园豆:20 [已解决问题] 解决于 2016-12-15 17:06

这个视图查询可现实正常的数据,但是count就会出错,是什么原因呢?

问题补充:

 

这个sql语句是 select count(*) from v_customer

 

这个是我写的一个视图

小白拜的主页 小白拜 | 初学一级 | 园豆:111
提问于:2016-09-29 10:55
< >
分享
最佳答案
0

你的这个视图中数据量有多大?

收获园豆:20
合抱之木,生于毫末 | 菜鸟二级 |园豆:229 | 2016-09-29 14:44

没啥数据量吧 就几百条而已

小白拜 | 园豆:111 (初学一级) | 2016-09-29 14:59

@小白拜: 你试下select count (1) from v_customer这个正常吗?

合抱之木,生于毫末 | 园豆:229 (菜鸟二级) | 2016-09-29 15:01

@合抱之木,生于毫末: 不正常 就是报字符转换错误的那个问题

小白拜 | 园豆:111 (初学一级) | 2016-09-29 15:02

@小白拜: 那这么来,你单独count e,b,d这3张表试下

合抱之木,生于毫末 | 园豆:229 (菜鸟二级) | 2016-09-29 15:13

@合抱之木,生于毫末: 没问题 能查询

小白拜 | 园豆:111 (初学一级) | 2016-09-29 15:24

@小白拜: 那接着就是把e,b关联起来后进行count看下正常不

合抱之木,生于毫末 | 园豆:229 (菜鸟二级) | 2016-09-29 15:26

@合抱之木,生于毫末: 不行

小白拜 | 园豆:111 (初学一级) | 2016-09-29 15:27

@小白拜: 还是报的那个错?

合抱之木,生于毫末 | 园豆:229 (菜鸟二级) | 2016-09-29 15:29

@合抱之木,生于毫末: 恩 对的

小白拜 | 园豆:111 (初学一级) | 2016-09-29 15:34

@小白拜: 你把你的视图复制发下,不要截图,我试着改下,有些地方看着有点不舒服。

合抱之木,生于毫末 | 园豆:229 (菜鸟二级) | 2016-09-29 15:35

@合抱之木,生于毫末:  (select a.*,b.OutAmount,b.WithdrawalAmount from EUnit a inner join CustomerAmount b on (a.UnitID=b.CustomerId and a.UnitTypeID=7 AND LEN(A.UnitID)<32)) e
 left join
 (select c.BankAccount,c.CustomerID,d.BankName,c.ReceivingBank from CustomerBack c inner join CustomernReceivingBank d on c.ReceivingBank=d.BankID where c.IsDefault=1) b
 on (e.UnitID=b.CustomerID AND LEN(e.UnitID)<32)
 left join dbo.TCustomerLevel d on e.CustomerLevelID=d.CustomerLevelID

小白拜 | 园豆:111 (初学一级) | 2016-09-29 15:36

@小白拜: 你执行这个语句试下:

select COUNT(*)
from (select a.*
,b.OutAmount
,b.WithdrawalAmount
from EUnit a inner join CustomerAmount b on a.UnitID=b.CustomerId
where a.UnitTypeID=7 AND LEN(A.UnitID)<32) t1
left join (select c.BankAccount
,c.CustomerID
,d.BankName
,c.ReceivingBank
from CustomerBack c inner join CustomernReceivingBank d on c.ReceivingBank=d.BankID where c.IsDefault=1) t2
on t1.UnitID=t2.CustomerID
left join dbo.TCustomerLevel t3 on t1.CustomerLevelID=t3.CustomerLevelID

合抱之木,生于毫末 | 园豆:229 (菜鸟二级) | 2016-09-29 15:43

@合抱之木,生于毫末: 一样 还是会报错

小白拜 | 园豆:111 (初学一级) | 2016-09-29 16:12

@小白拜: t1.UnitID=t2.CustomerID 这两个字段中哪个是字符串类型?哪个是int类型?

合抱之木,生于毫末 | 园豆:229 (菜鸟二级) | 2016-09-29 16:15

@合抱之木,生于毫末: 都是字符串类型 但是unitid里面存的有int类型的数据和GUID的数据

小白拜 | 园豆:111 (初学一级) | 2016-09-29 16:15

@小白拜:检查下数据吧,应该是join的条件一边数据有问题。要么你就全部convert成varchar再join

Daniel Cai | 园豆:10424 (专家六级) | 2016-09-29 17:38
其他回答(5)
0

我咋看不到图片

laugher_ccc | 园豆:593 (小虾三级) | 2016-09-29 11:17

不知道怎么回事没加上,现在又加了一次好了

支持(0) 反对(0) 小白拜 | 园豆:111 (初学一级) | 2016-09-29 11:39
0

图片呢???

顾晓北 | 园豆:10898 (专家六级) | 2016-09-29 11:20

不好意思,不知道怎么没加上 现在加上了

支持(0) 反对(0) 小白拜 | 园豆:111 (初学一级) | 2016-09-29 11:38

 里面有乱码?

支持(0) 反对(0) 顾晓北 | 园豆:10898 (专家六级) | 2016-09-29 11:40

@顾晓北: 没有乱码 只是有个字段 里面存的有数字 也有GUID

支持(0) 反对(0) 小白拜 | 园豆:111 (初学一级) | 2016-09-29 14:13
0

不count   

select *  from v_customer 会报错吗

liuxb1991 | 园豆:661 (小虾三级) | 2016-09-29 11:33

不会 查询不会报错 但是count就会报错

支持(0) 反对(0) 小白拜 | 园豆:111 (初学一级) | 2016-09-29 11:39

@小白拜: 这就奇怪了 你v_customer 是视图吧  贴出来给别人看看

支持(0) 反对(0) liuxb1991 | 园豆:661 (小虾三级) | 2016-09-29 11:41

@小白拜: 如果你select * from v_customer 不报错 那你count 肯定是没问题的 应该是视图的问题

支持(0) 反对(0) liuxb1991 | 园豆:661 (小虾三级) | 2016-09-29 11:47

@Summer、: 但是我现在select * 是没有问题的 但是count就报错

支持(0) 反对(0) 小白拜 | 园豆:111 (初学一级) | 2016-09-29 11:49

@小白拜: 这不科学啊  我自己建视图  select count(*)或者count(字段名)都没问题

你试试count(1)

支持(0) 反对(0) liuxb1991 | 园豆:661 (小虾三级) | 2016-09-29 11:52

@Summer、: 字段名 * 1 都用过了 不行 我也很奇怪这个情况是怎么回事

支持(0) 反对(0) 小白拜 | 园豆:111 (初学一级) | 2016-09-29 12:31
0

不要使用 * ,将其换成一个唯一的字段或者是主键。

CodeHsu | 园豆:5668 (大侠五级) | 2016-09-29 12:00

试过了 不行才问的

支持(0) 反对(0) 小白拜 | 园豆:111 (初学一级) | 2016-09-29 12:31
0

请问一下这个问题是怎么解决的 我也碰到了这个问题

队长阿威 | 园豆:202 (菜鸟二级) | 2022-06-27 08:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册