create view dbo.pview 
as SELECT a.name1,a.number,b.detail
FROM 表
where a.deal_time between DATEADD(dd, - 3,LEFT(CONVERT(char(19), GETDATE(), 121), 11)
      and  LEFT(CONVERT(char(19),GETDATE(), 121),11
      and CONVERT(int, (getdate() - '1901-01-01')) / 7 = 0
union all
SELECT a.name1,a.number,b.detail
FROM 表
where a.deal_time between DATEADD(dd, - 1,LEFT(CONVERT(char(19), GETDATE(), 121), 11)
      and  LEFT(CONVERT(char(19)

解决方案 »

  1.   

    to :
    vivianfdlpw() ( ) 信誉:100 
    一定要这样实现吗??
    谢谢:)
      

  2.   

    是不是 view中就是不可以用if判断啊??唉,好奇怪
      

  3.   

    CREATE VIEW DBO.PVIEW 
    AS
    SELECT A.NAME1,A.NUMBER,B.DETAIL
    FROM TABLE(表名)
    WHERE (A.DEAL_TIME BETWEEN DATEADD(DD, - 3,LEFT(CONVERT(CHAR(19), GETDATE(), 121), 11)
     AND  LEFT(CONVERT(CHAR(19),GETDATE(), 121),11 AND CONVERT(int, (getdate() - '1901-01-01')) / 7 = 0)
     OR (CONVERT(int, (getdate() - '1901-01-01')) / 7 != 0 AND A.DEAL_TIME BETWEEN DATEADD(DD, - 1,LEFT(CONVERT(CHAR(19), GETDATE(), 121), 11)
    在WHERE语句里判断。
    就是说当前是不是星期一,是的话就用星期五到当前日期的条件,不是星期一就用前天的条件
    CONVERT(int, (getdate() - '1901-01-01')) / 7只可能有等于0 或者 不等于0两种情况,所以OR两边的语句有且肯定只有一个能满足。