SELECT
tm as tm,
servername as server,
apu as apu,
lpu as lpu,
pcu as pcu
FROM
table
WHERE
servername=#server# 
<isNotEmpty property="tm">
AND  year(tm)=year(#tm#) 
AND month(tm)=month(#tm#)
</isNotEmpty>
如果servername='DB'的时候,加入条件tm>='2011-10-10'这样的条件
如果不是,就直接执行上面那句sql...

解决方案 »

  1.   

    建议用常规的SQL语句来描述一下你的需求。 看不太懂你的条件部分。   建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  2.   

    and tm>=if(servername='DB','2011-10-10',tm)
      

  3.   

    不好意思,描述不清楚
    我想对一个表进行查找
    但是针对某个数据不想让人知道
    比如servername=DB的2011-10-10以后的数据,不想被查询出来原来的Sql语句就是SELECT
    tm as tm,
    servername as server,
    apu as apu,
    lpu as lpu,
    pcu as pcu
    FROM
    table
    WHERE
    servername=#server# 
    <isNotEmpty property="tm">
    AND  year(tm)=year(#tm#) 
    AND month(tm)=month(#tm#)
    </isNotEmpty>
    这样的但是当查询的条件为servername='DB' 的时候,让tm>=2011-10-10这个条件自动加入就是想问有没有类似isNotEmpty 这个类似方法的东西
      

  4.   

    参考2楼,也可以用代码生成SQL语句
      

  5.   

    SELECT
    tm as tm,
    servername as server,
    apu as apu,
    lpu as lpu,
    pcu as pcu
    FROM
    table
    WHERE
    servername=#server# 
    <isNotEmpty property="tm">
    AND  year(tm)=year(#tm#) 
    AND month(tm)=month(#tm#)
    </isNotEmpty>
    and (#server# != 'DB' or tm>='2011-10-10')
      

  6.   

    应该改成小于号SELECT
    tm as tm,
    servername as server,
    apu as apu,
    lpu as lpu,
    pcu as pcu
    FROM
    table
    WHERE
    servername=#server# 
    <isNotEmpty property="tm">
    AND  year(tm)=year(#tm#) 
    AND month(tm)=month(#tm#)
    </isNotEmpty>
    and (#server# != 'DB' or tm<'2011-10-10')