@1 SELECT * FROM   (  SELECT RQ AS 日期,MONTH(RQ) AS 月份,Day(rq) as 日,DATEPART(week, rq) as 周,星期=case when DATEPART(dw, RQ)=1 then '日'  when DATEPART(dw, RQ)=2 then '一' when DATEPART(dw, RQ)=3 then '二' when DATEPART(dw, RQ)=4 then '三' when DATEPART(dw, RQ)=5 then '四' when DATEPART(dw, RQ)=6 then '五' when DATEPART(dw, RQ)=7 then '六' end,市=case when (DATEPART(hh, rq) * 100 + DATEPART(mi, rq) >= 630) AND (DATEPART(hh, rq)*100+DATEPART(mi, rq)  < 1030) then '1.早餐' when (DATEPART(hh, rq) * 100 + DATEPART(mi, rq) >= 1030) AND (DATEPART(hh, rq)*100+DATEPART(mi, rq)  < 1400) then '2.午饭市' when (DATEPART(hh, rq) * 100 + DATEPART(mi, rq) >= 1400) AND (DATEPART(hh, rq)*100+DATEPART(mi, rq)  < 1700) then '3.下午茶' when (DATEPART(hh, rq) * 100 + DATEPART(mi, rq) >= 1700) AND (DATEPART(hh, rq)*100+DATEPART(mi, rq)  < 2030) then '4.晚饭市'  else '5.宵夜' end,dh as 单号,deskname as 台号,je as 金额,mansl as 人数,cast(je/(CASE WHEN mansl = 0 THEN 1 ELSE mansl END) as decimal(12,2)) as 人均,opman as 收银员,fkfs as 付款方式, 日金额 = CASE WHEN DATEPART(dw, RQ)=1 THEN JE ELSE 0 END, 日人数 = CASE WHEN DATEPART(dw, RQ) = 1 THEN MANSL ELSE 0 END, 一金额 = CASE WHEN DATEPART(dw, RQ)=2 THEN JE ELSE 0 END, 一人数 = CASE WHEN DATEPART(dw, RQ) = 2 THEN MANSL ELSE 0 END, 二金额 = CASE WHEN DATEPART(dw, RQ)=3 THEN JE ELSE 0 END, 二人数 = CASE WHEN DATEPART(dw, RQ) = 3 THEN MANSL ELSE 0 END, 三金额 = CASE WHEN DATEPART(dw, RQ)=4 THEN JE ELSE 0 END, 三人数 = CASE WHEN DATEPART(dw, RQ) = 4 THEN MANSL ELSE 0 END, 四金额 = CASE WHEN DATEPART(dw, RQ)=5 THEN JE ELSE 0 END, 四人数 = CASE WHEN DATEPART(dw, RQ) = 5 THEN MANSL ELSE 0 END, 五金额 = CASE WHEN DATEPART(dw, RQ)=6 THEN JE ELSE 0 END, 五人数 = CASE WHEN DATEPART(dw, RQ) = 6 THEN MANSL ELSE 0 END, 六金额 = CASE WHEN DATEPART(dw, RQ)=7 THEN JE ELSE 0 END, 六人数 = CASE WHEN DATEPART(dw, RQ) = 7 THEN MANSL ELSE 0 END  FROM (select * from diningzd WHERE 1 = 1 and rq>=#_START and rq<=#_END  union all select * from diningzdold WHERE 1 = 1 and rq>=#_START and rq<=#_END ) aaa  ) bbb WHERE (1 = 1)后面的红色部分啥意思呢,从我们公司新开发的收银的配置文件复制下来的,本人新手

解决方案 »

  1.   

    aaa ) bbb WHERE (1 = 1)
    aaa,bbb应该是给派生出来的表分别起个别名where那个条件始终成立,不用管
      

  2.   

    类似
    select * from (select 1 as id union select 2) t
      

  3.   

    http://fr.cc0311.com/database-sql-select-from-table-where.html
    看了就明白了~
      

  4.   

    where 1=1的应用,不是什么高级的应用,也不是所谓的智能化的构造,仅仅只是为了满足多条件查询页面中不确定的各种因素而采用的一种构造一条正确能运行的动态 SQL语句的一种方法。
      

  5.   

    其实也就是为了怕有多条件时,如有两个条件:id和phone,不知道用户输入几个条件,可能是一个,或两个,这时如果用where 1=1 ...  后面不管加哪个条件,id 或是phone都可以直接用:and id='xxx';and phone='zzz' ,就是可以直接用and ,不会考虑:where id='xxx'这样的情况