起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 234|回复: 13

【结贴】救命啊......关于数据集的问题**

[复制链接]
发表于 2008-9-10 10:15:45 | 显示全部楼层 |阅读模式
select * from (
SELECT pb.PrePayNoticeID, pb.LicenceID, pb.MoneyTotal,pb.payCompany,ca.CaseGuid, ca.CaseAcceptID, ca.BuildCompanyContactor, ca.BuildCompanyPhone, ca.PrePayStatus, ca.BUILDCOMPANYNAME
  ,'1' as casetype FROM TBLPREPAYBILL pb LEFT JOIN TBLCASEBASE ca on pb.CASEGUID = ca.CASEGUID
  WHERE ca.CASEMAINSTATUS in (1,2,3,4) union

SELECT pbo.PrePayNoticeID, pbo.LicenceID, pbo.MoneyTotal,pbo.PayCompany,cao.CaseGuid, cao.CaseAcceptID, cao.BuildCompanyContactor, cao.BuildCompanyPhone, cao.PrePayStatus, cao.BuildCompanyName
  ,'2' as casetype FROM tblPrePayBillOccupy pbo LEFT JOIN tblCaseBaseOccupy cao on pbo.CASEGUID = cao.CASEGUID
  WHERE cao.CASEMAINSTATUS in (1,2) union
SELECT pb2.PrePayNoticeID, pb2.LicenceID, pb2.MoneyTotal,pb2.payCompany,cas.CaseGuid, cas.CaseAcceptID, cas.BuildCompanyContactor, cas.BuildCompanyPhone, cas.PrePayStatus, cas.BuildCompanyName
  ,'3' as casetype FROM tblPrePayBillOccupy2 pb2 LEFT JOIN tblCaseBaseSheshi cas on pb2.CASEGUID = cas.CASEGUID
  WHERE cas.CASEMAINSTATUS in (1,2))
这条语句在oracle客户端运行没问题..可是在数据集里面就有问题
error occur during invoke getRecords method, FMTBcd Scale no match: 12(Def: 8)

之前一直在用的...今朝就发现不行了.这个错误是什么意思?
回复

使用道具 举报

发表于 2008-9-10 10:20:36 | 显示全部楼层
应该是数字类型的小数位数有问题了!检查一下逻辑表的小数位数与物理表的是否一致呢?或者创建一下这几个表看看(保留数据)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-10 10:22:53 | 显示全部楼层
这样说是数字字段有问题..
回复 支持 反对

使用道具 举报

发表于 2008-9-10 10:23:56 | 显示全部楼层
在Select中,把数值类型的字段,转换成有精度的数字看看,比如
Cast MoneyTotal as numeric(12,2))
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-10 10:40:34 | 显示全部楼层
数据集的sql编辑器.好像不认得cast
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-10 10:42:57 | 显示全部楼层
这个字段高了显示格式..¥#,###.00
回复 支持 反对

使用道具 举报

发表于 2008-9-10 10:59:43 | 显示全部楼层
数据集的sql编辑器.好像不认得cast?
报啥错误?

有几个帖子类似的错误
http://bbs.justep.com/forum.php?mod=viewthread&tid=15738
http://bbs.justep.com/forum.php?mod=viewthread&tid=23522
楼主可以参考看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-10 11:06:00 | 显示全部楼层
按确定的时候就说.sql分析错误

  SELECT pbo.PrePayNoticeID, pbo.LicenceID, Cast (pbo.MoneyTotal as numeric(12,2)) MoneyTotal,pbo.PayCompany,cao.CaseGuid, cao.CaseAcceptID, cao.BuildCompanyContactor, cao.BuildCompanyPhone, cao.PrePayStatus, cao.BuildCompanyName
  ,'2' as casetype FROM tblPrePayBillOccupy pbo LEFT JOIN tblCaseBaseOccupy cao on pbo.CASEGUID = cao.CASEGUID
  WHERE cao.CASEMAINSTATUS in (1,2)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-10 11:19:01 | 显示全部楼层
我把三条语句分开来查是没问题........
合起来查就有问题..
这三个结果集的其中一个有一个数据是288.700629860007不查这个数据集就没出现问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-10 11:32:10 | 显示全部楼层
用round 把那个东东截了..可以显示格式就不生效了..
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-22 07:06 , Processed in 0.036049 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表