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就报错了,导致不能执行。
评论
发表评论

您还没有登录,请登录后发表评论

eyejava
搜索本博客
我的相册
5882c820-4b57-4dfd-b8d1-046e88098b0f-thumb
Gmail
共 8 张
存档
最新评论