1SELECT *FROM mylist WHERE (CONVERT(varchar(30), [datetime],21) = '2005-05-05 07:%')

解决方案 »

  1.   

    --1.
    SELECT * FROM mylist
    WHERE datepart(hour,[datetime])=7--2.
    select time,
    ValueOfIndex0=max(case [index] when 0 then val end),
    ValueOfIndex1=max(case [index] when 1 then val end),
    ValueOfIndex2=max(case [index] when 2 then val end)
    from list
    group by time
      

  2.   


    --2.如果index值不固定
    declare @s nvarchar(4000)
    set @s=''
    select @s=@s+','+quotename('ValueOfIndex'+rtrim([index]))
    +'=max(case [index] when '+rtrim([index])+' then val end)'
    from list
    group by [index]
    exec('
    select time'+@s+'
    from list
    group by time')
      

  3.   

    1、不是like语句能用通配符?
    2、
    创建视图:
    ------------------------------------------------------------
    declare @view varchar(20)
    declare @s varchar(8000)
    set @view = 'new_view'
    set @s = 'create view '+@view+' as select time'select @s = @s + ',[ValueOfIndex'+rtrim(index)+']=max(case when index = '+rtrim(index)+' then val end)'
    from list group by index order by indexset @s = @s + ' from val group by time'
    exec(@s)