CREATE PROCEDURE [XXX] 
(@HLCon_ID char(13), 
              @LC_ID1          char(1), 
              @LC_Name1    varchar(50), 
              @LC_ID2          char(1), 
              @LC_Name2    varchar(50)) 
AS SELECT t1.HLGT_Se as '段数',t1.HLGT_Ratio as '@LC_Name1',t2.HLGT_Ratio as '@LC_Name2' 
FROM (select * from HplcMPCondition where HLCon_ID=@HLCon_ID and LC_ID=@LC_ID1) t1, 
(select * from HplcMPCondition where HLCon_ID=@HLCon_ID and LC_ID=@LC_ID2) t2 
WHERE  t1.HLGT_Se=t2.HLGT_Se 
GO 
t1.HLGT_Ratio as '@LC_Name1',t2.HLGT_Ratio as '@LC_Name2' 这句话中as后面的参数该怎么写,查询出来后的表头是 
段数 @LC_Name1 @LC_Name2,请各位帮我改改,本人很菜,谢谢 .
已经是连续第三天问这个问题了...

解决方案 »

  1.   

    使用动态sql
    @sql=‘SELECT t1.HLGT_Se as 段数,t1.HLGT_Ratio as’+@LC_Name1+',t2.HLGT_Ratio as ‘+@LC_Name2+' 
    FROM (select * from HplcMPCondition where HLCon_ID=’+@HLCon_ID +'and LC_ID='@LC_ID1+') t1, 
    (select * from HplcMPCondition where HLCon_ID='+@HLCon_ID+' and LC_ID='+@LC_ID2+') t2 
    WHERE  t1.HLGT_Se=t2.HLGT_Se 'exec (@sql)
    GO 
      

  2.   

    运行后有错误
    第 2 行: 'LC_ID' 附近有语法错误。
    第 3 行: 't2' 附近有语法错误。 
    我没找到哪有错误.
      

  3.   

    //例子
    declare @name varchar(10)
    SET @name='aaaa'
    DECLARE @sql varchar(8000)
    SET @sql='SELECT t.Year AS '+@name+'  FROM Transactions t'
    EXEC (@sql) 
    至于你的,没有数据没法去调试。SET @sql='SELECT t1.HLGT_Se as ''段数'',t1.HLGT_Ratio as '+@LC_Name1+',t2.HLGT_Ratio as '+@LC_Name2+'' 
    SET @sql=@sql+'FROM (select * from HplcMPCondition where HLCon_ID='=+HLCon_ID+' and LC_ID='+@LC_ID1+') t1,' 
    SET @sql=@sql+'(select * from HplcMPCondition where HLCon_ID='+@HLCon_ID+' and LC_ID=@LC_ID2) t2' 
    SET @sql=@sql+'WHERE  t1.HLGT_Se=t2.HLGT_Se' 
      

  4.   


    declare @sql varchar(8000)
    set @sql=''
    @sql=@sql + 'SELECT t1.HLGT_Se as 段数,t1.HLGT_Ratio as ' +@LC_Name1 + ',t2.HLGT_Ratio as ' +@LC_Name2+ ' 
    FROM (select * from HplcMPCondition where HLCon_ID=' + @HLCon_ID + 'and LC_ID=' + @LC_ID1+') t1, 
    (select * from HplcMPCondition where HLCon_ID='+@HLCon_ID+' and LC_ID='+@LC_ID2+') t2 
    WHERE  t1.HLGT_Se=t2.HLGT_Se' 
      

  5.   

    建议改成:
    CREATE PROCEDURE [XXX] 
    (
    @HLCon_ID char(13), 
    @LC_ID1 char(1), 
    @LC_ID2 char(1)
    )
    AS
    select t1.HLGT_Se as 段数,t1.HLGT_Ratio as LC_Name1,t2.HLGT_Ratio as LC_Name2 from HplcMPCondition t1 inner join HplcMPCondition t2 on t1.HLGT_Se=t2.HLGT_Se
    where t1.HLCon_ID=@HLCon_ID and t1.LC_ID=@LC_ID1 and t2.HLCon_ID=@HLCon_ID and t2.LC_ID=@LC_ID2GO 直接获取存储过程查询得到的数据集.
      

  6.   

    这个要用动态sql去做,由于没有数据,我就不给做测试了,你自己测试CREATE PROCEDURE [XXX]
    (
    @HLCon_ID char(13),
    @LC_ID1          char(1),
    @LC_Name1    varchar(50),
    @LC_ID2          char(1),
    @LC_Name2    varchar(50)
    )
    as
    begin
    declare @sql varchar(200)
    select @sql = 'select t1.HLGT_Se as ' + '段数' + ',t1.HLGT_Ratio as' + @LC_Name1 + 
    ',t2.HLGT_Ratio as' + @LC_Name2
    from (select * from HplcMPCondition where HLCon_ID=@HLCon_ID and LC_ID=@LC_ID1) t1,
    (select * from HplcMPCondition where HLCon_ID=@HLCon_ID and LC_ID=@LC_ID2) t2
    where t1.HLGT_Se=t2.HLGT_Seexec (@sql)
    end