一窝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 ''='y' then bobalance3 else bobalance  end from t1,其中为一个接受参数的占位变量,取值有三个,m,q,y 分别表示月、季、年,在表t1中有三个字段boybalance3,bombalance,boqbalance。这条语句其实就是要取月/季/年初余额,当=y的时候,总是报错,奇怪啊奇怪。每次的报错是boybalance不存在,可是我让它取boybalance3啊,原来 sql在解析else 语句中的 boybalance就报错了,导致不能执行。

你可能感兴趣的:(SQL)