前几天我也遇到过这个问题,是oracle上的。问题一样,在程序中成功过几次。 后改sql可以 先前sql select case when grouping(v.costcode)=1 and grouping (code1.costcodename)<>1 then code1.costcodename when grouping(substr(v.costcode,0,2))=1 then '总计' else code.costcodename end costcodename, v.contractid, nvl(v.serialno,0) serialno, case when grouping(v.costcode)=1 and grouping (code1.costcodename)<>1 then substr(v.costcode,0,2) when grouping(code1.costcodename)=1 then '0' else v.costcode end costcode , --decode(grouping(v.costcode),1,'0',v.costcode) costcode , decode(v. contractorname,null,null,'合同号:【'||v.contractno||'】') mercode, decode(v. contractorname,null,null,'厂商:'||v.contractorname) model, '1' inflag, sum(decode(v.orgenno,161,v.count,0)) "161" , null revisemoney, sum(unitprice*count) totalmoneyfrom view_auditinfo v ,costcodeinfo code,costcodeinfo code1 where v.taskorderid=649 and substr(v.costcode,0,2)<>'01' and v.costcode=code.costcode and substr(v.costcode,0,2)=code1.costcode group by rollup( (substr(v.costcode,0,2),code1.costcodename), (v.costcode,code.costcodename,v.contractno,v.serialno,v.contractid,v.contractname,v.mercode,v.model,v.contractorname,code.costcodename))
修改之后 sql select case when grouping(a.costcodename)=1 and grouping(a.code1) <>1 then a.code1 ||'合计' when grouping(a.code1)=1 then '总计' else a.costcodename end costcodename, a.contractid, nvl(a.serialno,0) serialno, case when grouping(a.costcodename)=1 and grouping(a.code1) <>1 then substr(a.costcode,0,2)||'xx' when grouping(a.code1)=1 then '99xx' else a.costcode end costcode, a.mercode,a.model, a.inflag, sum(a."161") "161",a.revisemoney,sum(a.totalmoney) as totalmoney from (select code.costcodename, v.serialno, v.costcode, v.contractid, code1.costcodename code1, '1' inflag, decode(v. contractorname,null,null,'合同号:【'||v.contractno||'】') mercode, decode(v. contractorname,null,null,'厂商:'||v.contractorname) model, sum(decode(v.orgenno,161,v.count,0)) "161" , null revisemoney, sum(unitprice*count) totalmoney from view_auditinfo v ,costcodeinfo code,costcodeinfo code1 where v.taskorderid=649 and substr(v.costcode,0,2)<>'01' and v.costcode=code.costcode and substr(v.costcode,0,2)=code1.costcode group by code.costcodename,v.contractno,v.contractid,v.serialno,v.mercode,v.model,v.contractorname,v.costcode,code1.costcodename) agroup by rollup((a.code1,substr(a.costcode,0,2)),(a.costcode,a.costcodename,a.contractid,a.serialno,a.inflag,a.mercode,a.model,a."161",a.revisemoney,a.totalmoney))
如果sql语句没问题,那就是调用sql的方法有问题了,写一个最简单的sql,select * from tablename试,看能不能通过
perhaps: 1.connection failed 2.your sqlcommand sentence is wrong 3.other part of your code cause this exception
自己慢慢找:)
后改sql可以
先前sql
select case when grouping(v.costcode)=1 and grouping (code1.costcodename)<>1
then code1.costcodename
when grouping(substr(v.costcode,0,2))=1 then '总计'
else code.costcodename
end costcodename,
v.contractid,
nvl(v.serialno,0) serialno,
case when grouping(v.costcode)=1 and grouping (code1.costcodename)<>1
then substr(v.costcode,0,2)
when grouping(code1.costcodename)=1 then '0'
else v.costcode
end costcode ,
--decode(grouping(v.costcode),1,'0',v.costcode) costcode ,
decode(v. contractorname,null,null,'合同号:【'||v.contractno||'】') mercode,
decode(v. contractorname,null,null,'厂商:'||v.contractorname) model,
'1' inflag, sum(decode(v.orgenno,161,v.count,0)) "161" ,
null revisemoney,
sum(unitprice*count) totalmoneyfrom view_auditinfo v ,costcodeinfo code,costcodeinfo code1
where v.taskorderid=649 and substr(v.costcode,0,2)<>'01' and v.costcode=code.costcode and substr(v.costcode,0,2)=code1.costcode
group by rollup( (substr(v.costcode,0,2),code1.costcodename),
(v.costcode,code.costcodename,v.contractno,v.serialno,v.contractid,v.contractname,v.mercode,v.model,v.contractorname,code.costcodename))
sql
select case
when grouping(a.costcodename)=1 and grouping(a.code1) <>1
then a.code1 ||'合计'
when grouping(a.code1)=1
then '总计'
else
a.costcodename
end costcodename, a.contractid,
nvl(a.serialno,0) serialno, case
when grouping(a.costcodename)=1 and grouping(a.code1) <>1
then substr(a.costcode,0,2)||'xx'
when grouping(a.code1)=1
then '99xx'
else
a.costcode
end costcode, a.mercode,a.model,
a.inflag,
sum(a."161") "161",a.revisemoney,sum(a.totalmoney) as totalmoney
from
(select code.costcodename, v.serialno,
v.costcode,
v.contractid,
code1.costcodename code1,
'1' inflag, decode(v. contractorname,null,null,'合同号:【'||v.contractno||'】') mercode,
decode(v. contractorname,null,null,'厂商:'||v.contractorname) model, sum(decode(v.orgenno,161,v.count,0)) "161" ,
null revisemoney,
sum(unitprice*count) totalmoney from view_auditinfo v ,costcodeinfo code,costcodeinfo code1
where v.taskorderid=649 and substr(v.costcode,0,2)<>'01' and v.costcode=code.costcode and substr(v.costcode,0,2)=code1.costcode
group by code.costcodename,v.contractno,v.contractid,v.serialno,v.mercode,v.model,v.contractorname,v.costcode,code1.costcodename) agroup by rollup((a.code1,substr(a.costcode,0,2)),(a.costcode,a.costcodename,a.contractid,a.serialno,a.inflag,a.mercode,a.model,a."161",a.revisemoney,a.totalmoney))
1.connection failed
2.your sqlcommand sentence is wrong
3.other part of your code cause this exception