2006-10-24
一窝SQL问题
Tuesday February 28, 2006 - 03:52pm (CST)
报表数据核对,真tm对穿肠。核对加修改一堆复杂的sql,让人彻底晕头。
1.left join,还是它。
当left join时,对于主表的限制条件不能省,即使这个字段在On 语句中作为连接条件。
如 select * from t1 left join t2 on t1.currency=t2.currency and t2.currency in ('01','97') where ... 这样的sql 看起来只会出来 currency为01,97的,实际上冒出来几条14的,百思不解。原来14的那几条是在t2中没有关联上的记录,t2.currency in (...)当然对它没有约束力了,必须在where中加上 t1.currency in ('01','97')
2.case when,这个家伙又出问题了?
select case when '<p0/>'='y' then bo<p0/>balance3 else bo<p0/>balance end from t1,其中<p0/>为一个接受参数的占位变量,取值有三个,m,q,y 分别表示月、季、年,在表t1中有三个字段boybalance3,bombalance,boqbalance。这条语句其实就是要取月/季/年初余额,当<p0/>=y的时候,总是报错,奇怪啊奇怪。每次的报错是boybalance不存在,可是我让它取boybalance3啊,原来 sql在解析else 语句中的 boybalance就报错了,导致不能执行。
报表数据核对,真tm对穿肠。核对加修改一堆复杂的sql,让人彻底晕头。
1.left join,还是它。
当left join时,对于主表的限制条件不能省,即使这个字段在On 语句中作为连接条件。
如 select * from t1 left join t2 on t1.currency=t2.currency and t2.currency in ('01','97') where ... 这样的sql 看起来只会出来 currency为01,97的,实际上冒出来几条14的,百思不解。原来14的那几条是在t2中没有关联上的记录,t2.currency in (...)当然对它没有约束力了,必须在where中加上 t1.currency in ('01','97')
2.case when,这个家伙又出问题了?
select case when '<p0/>'='y' then bo<p0/>balance3 else bo<p0/>balance end from t1,其中<p0/>为一个接受参数的占位变量,取值有三个,m,q,y 分别表示月、季、年,在表t1中有三个字段boybalance3,bombalance,boqbalance。这条语句其实就是要取月/季/年初余额,当<p0/>=y的时候,总是报错,奇怪啊奇怪。每次的报错是boybalance不存在,可是我让它取boybalance3啊,原来 sql在解析else 语句中的 boybalance就报错了,导致不能执行。
发表评论
- 浏览: 382585 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
我的相册
Gmail
共 8 张
共 8 张
最新评论
-
java encoding参考
Good ,thanks.
-- by zuowei -
有多少异常可以重来
我今天也遇到这个问题,才搜到这个帖子~ 还没有解决,等恢复哦
-- by javamanlcy007 -
有多少异常可以重来
这个错误解决了,又抱了别的错误~
-- by iceworld4143 -
有多少异常可以重来
解释不太懂,我也遇到这个问题了,可是我没用ant。 等回复。
-- by iceworld4143 -
考试不及格
证券从业资格考试
-- by eyejava






评论排行榜