select Sname from
(select  Sname,N'Age' = datediff(year,sbirthday,getdate()) -
case when right(convert(char(10),[Sbirthday],120),5) > right(convert(char(10),getdate(),120),5)
then 1 else 0 end from [dbo].[Student])as temptalbe
where Age between 18 and 19
go
这里as temptalbe的作用是什么?select Sname from中Sname列的前序又是什么?
我T-SQL语法还未过关,望各位详细一点介绍。这里用的MS SQL2000

解决方案 »

  1.   

    这里as temptalbe的作用是什么?
    ----------
    为子查询取个表别名
    select Sname from中Sname列的前序又是什么? 
    --------
    默认就是from的表 temptable
      

  2.   

    as temptalbe的作用是什么
    表的别名,SQL语法规定的,这种from()的必须带别名
    Sname列的前序   什么意思没看懂
      

  3.   

    select Sname from 
    (
    select  Sname,N'Age' = datediff(year,sbirthday,getdate()) - 
    case when right(convert(char(10),[Sbirthday],120),5) > right(convert(char(10),getdate(),120),5) 
    then 1 else 0 end from [dbo].[Student]
    )as temptalbe    ---别名
    where Age between 18 and 19 
      

  4.   

    可是,select temptable.Sname from  ..会报错的。
      

  5.   

    使用Northwind库的Orders为例select t.OrderID
    from
    (
      select OrderID from Orders 
    ) as t--没有报错
      

  6.   

    有时候看sql2000的联机帮助是不错的选择