where  a.记账凭证日期>=case when @起始凭证日期='' 
           then a.记账凭证日期 else @起始凭证日期 end这句话后面的意思是知道,就是当起始凭证日期为空就是记账凭证日期,否则为输入的起始凭证日期
但前面记账凭证日期大于等于后面我就理解不了了,谁跟我讲解一下

解决方案 »

  1.   

    什么起始日期啊?你sql查询的就是记账日期大于输入日期的单据,如果输入日期为空就是查询出来全部单据,就这么简单。
      

  2.   

    1,当 变量 @起始凭证日期 等于初始值 ''时,对这个结果集不做任何筛选。 
       因为:a.记账凭证日期 始终是大于等于本身的。2,当@起始凭证日期不等于初始值的时候,筛选条件是: a.记账凭证日期>=@起始凭证日期
    如果还不清楚,可以在应用中理解:
    想象一个窗体上有一个文本框,后面有个按钮。
    当没有在文本框中填写任何日期的时候,点击按钮,这时加载的是整个数据。
    如果你填写了一个日期。点击按钮,这个时候加载的数据将满足这个条件:记账凭证日期>你填写的日期
      

  3.   

    恩,结果我懂,但是我就是不知道大于等于后面跟case when 的意思是什么意思
    哪句话是判断a.记账凭证日期是>=@起始凭证日期呢
    后面case when 的意思不是为空时就是所有的记账凭证日期,否则就是起始凭证日期么?
      

  4.   

    select (case when @起始凭证日期='' then a.记账凭证日期 else @起始凭证日期 end) as col
    from tb
    --where  a.记账凭证日期>=(case when @起始凭证日期='' 
    --         then a.记账凭证日期 else @起始凭证日期 end)
    --看看col列结果是什么