以下语句在执行的时候没有返回结果,我想问一下变量放在字符串中连接的时候引号究竟怎么打,打多少个?
     A表                      B表
 ID,   Filldate           ID      Name
 1     2009-09-01         1       jack     
 2     2009-09-03         2       lily
 3     2009-09-04         3       Rita
 
declare @Filldate varchar(10),@subsql varchar(5000)
  Set @subsql = ' select '''+@Filldate+'''=convert(varchar(10),Min(A.Filldate)120)
                    from A(nolock),B(nolock)  where A.ID=B.ID '
Print (@subsql);
Exec (@subsql)---执行后提示执行成功,但是没有显示任务结果

解决方案 »

  1.   

    declare @Filldate varchar(10),@subsql varchar(5000) 
      Set @subsql = ' select '''+@Filldate+'''=convert(varchar(10),Min(A.Filldate),--少了逗号120) 
                        from A(nolock),B(nolock)  where A.ID=B.ID ' 
    Print (@subsql); 
    Exec (@subsql)
      

  2.   

    Set @subsql = ' select '''+@Filldate+'''=convert(varchar(10),Min(A.Filldate),120) 
                        from nolock A,nolock B  where A.ID=B.ID '
      

  3.   

    declare @Filldate varchar(10),@subsql varchar(5000) 
      Set @subsql = ' select '''+@Filldate+'''=convert(varchar(10),Min(A.Filldate),120) 
                        from A(nolock),B(nolock)  where A.ID=B.ID ' 
    Print (@subsql); 
    Exec (@subsql)convert(varchar(10,mn(a.filldate),120)--注意这个
      

  4.   

    declare @Filldate varchar(10),@subsql varchar(5000) 
    SET @Filldate='字段名'
      Set @subsql = ' select ['+@Filldate+']=convert(varchar(10),Min(A.Filldate),120) 
                        from A(nolock),B(nolock)  where A.ID=B.ID ' 
    Print (@subsql); 
      

  5.   


    declare @Filldate varchar(10),@subsql varchar(5000) 
    set @Filldate = 'a'
      Set @subsql = ' select '''+@Filldate+'''=convert(varchar(10),Min(A.Filldate)120) ,
                     from A(nolock),B(nolock)  where A.ID=B.ID ' 
    Print @subsql select 'a'=convert(varchar(10),Min(A.Filldate)120) ,
                     from A(nolock),B(nolock)  where A.ID=B.ID 
      

  6.   

    ---@filldate需要赋列名
    ----------------------------------------------------------------
    -- Author  :fredrickhu(小F,向高手学习)
    -- Date    :2009-09-11 22:33:17
    -- Version:
    --      Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 
    -- Nov 24 2008 13:01:59 
    -- Copyright (c) 1988-2005 Microsoft Corporation
    -- Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
    --
    ----------------------------------------------------------------
    --> 测试数据:[A]
    if object_id('[A]') is not null drop table [A]
    go 
    create table [A]([ID] int,[Filldate] datetime)
    insert [A]
    select 1,'2009-09-01' union all
    select 2,'2009-09-03' union all
    select 3,'2009-09-04'
    --> 测试数据:[B]
    if object_id('[B]') is not null drop table [B]
    go 
    create table [B]([ID] int,[Name] varchar(4))
    insert [B]
    select 1,'jack' union all
    select 2,'lily' union all
    select 3,'Rita'
    --------------开始查询--------------------------
    declare @Filldate varchar(10),@subsql varchar(5000) 
      set @filldate='name'
      Set @subsql = ' select '''+@Filldate+'''=convert(varchar(10),Min(A.Filldate),120) 
                        from A(nolock),B(nolock)  where A.ID=B.ID ' 
    --Print (@subsql); 
    Exec (@subsql)
    ----------------结果----------------------------
    /* name
    ----------
    2009-09-01(1 行受影响)*/
      

  7.   

    楼主没有为   @Filldate  赋值,当然查不到数据
      

  8.   

    谢谢大家的热心解答,我试下看是否需要先赋值。 #5楼的 soft_wsx, 不好意思, 昨天发完贴就下班了,不好意思
      

  9.   

    可以了,原来 set @Filldate = 'a' 是给字段赋列名,学习了!