现想创建一个视图,20点之前和之后显示的数据是不一样的,也就是查询条件不一样,可不可以放到一个视图里,怎么放?我有一段查询语句运行是正常的,但不知道怎么放到创建视图的语句中,请高人指点if DATEPART(HOUR,GETDATE())<=20
begin
SELECT * FROM aws.dbo.tabHourData 
where 
(
(DATEDIFF(DAY,ObservTime,GETDATE())=1 and DATEPART(HOUR,ObservTime)<=20)
or 
(DATEDIFF(DAY,ObservTime,GETDATE())=2 and DATEPART(HOUR,ObservTime)>20)
)
and ( StationID='K2299' or StationID like 'K23%')
order by ObservTime desc
end
else
begin
select * from aws.dbo.tabHourData
where
(
(DATEDIFF(DAY,ObservTime,GETDATE())=0 and DATEPART(HOUR,ObservTime)<=20)
or
((DATEDIFF(DAY,ObservTime,GETDATE())=1 and DATEPART(HOUR,ObservTime)>20))
)
and ( StationID='K2299' or StationID like 'K23%')
order by ObservTime desc
end

解决方案 »

  1.   

    (
    (DATEDIFF(DAY,ObservTime,GETDATE())=(case when DATEPART(HOUR,GETDATE())<=20 then 1 else 0 end) and DATEPART(HOUR,ObservTime)<=20)
    or
    ((DATEDIFF(DAY,ObservTime,GETDATE())=(case when DATEPART(HOUR,GETDATE())<=20 then 2 else 1 end) and DATEPART(HOUR,ObservTime)>20))
    )
      

  2.   


    create view viewname
    as
    select * from aws.dbo.tabHourData
    where
    (
    (DATEDIFF(DAY,ObservTime,GETDATE())=(case when DATEPART(HOUR,GETDATE())<=20 then 1 else 0 end) and DATEPART(HOUR,ObservTime)<=20)
    or
    ((DATEDIFF(DAY,ObservTime,GETDATE())=(case when DATEPART(HOUR,GETDATE())<=20 then 2 else 1 end) and DATEPART(HOUR,ObservTime)>20))
    )
    and ( StationID='K2299' or StationID like 'K23%')
    order by ObservTime desc