A表:ID,Name,Sex
      1  'jim' '男'
B表:AID,log(nvarchar)
      1   'aa'
      1   'bb
      1   'cc'
我想用一个语句得到结果       1,'jim','男','aa|bb|cc|'请问如何写SQL?

解决方案 »

  1.   

    比较麻烦select 语句不能进行赋之操作。所以你的'aa|bb|cc|'字符串无法用一句得到结果。只能在语句中加变量,
    但是你可能要选出好多人,所以变量个数无法定。
      

  2.   

    感觉很难,建议至sqlserver版去问问。
    不过可通过多条指令来实现。
    笨一点吧,先找到 得得“l”
    再通过"l"得到,后面的,再把所有加起来吧。帮你顶!
      

  3.   

    CREATE Proc Result @id varchar
    as
    declare @str1 varchar(400)
    declare @str2 varchar(400)
    set @str2='_'
    set @str1=''
    select @str1=@str1 + log +@str2 from [t2] where id=@id
    set @str1=left(@str1,len(@str1)-1)Select id,name,sex,@str1 from t1 where id=@id
    GO
      

  4.   

    不能用存储过程啊,就用一个sql语句实现,在程序中调用的,拜托大家了啊!!!!
      

  5.   

    其实你执行这句就可以
    但是人的id要以一个选declare @str1 varchar(400)
    declare @str2 varchar(400)
    set @str2='_'
    set @str1=''
    select @str1=@str1 + log +@str2 from [t2] where id=@id
    set @str1=left(@str1,len(@str1)-1)Select id,name,sex,@str1 from t1 where id=@id
      

  6.   

    --更正一下
    CREATE PROCEDURE Result @id varchar(100)
    as
    declare @str1 varchar(400)
    declare @str2 varchar(400)
    set @str2='|'
    set @str1=''
    select @str1=@str1 + log +@str2 from [B表] where aid=@id
    set @str1=left(@str1,len(@str1)-1)Select id,name,sex,@str1 as result from [A表] where id=@id
    GO
      

  7.   


    晕,顾着修改
    恐怕我浪费时间了。
    一句sql是不可能实现的,
    还是在程序中一个个纪录movenext做格式化吧。
      

  8.   

    我用的是sqlserver,谢谢各位大哥,我会再加100分给大家的,帮忙啊!
      

  9.   

    to DebugXP()    加油啊!密切关注!
       附加一点,我B表里面的具体有多少个记录符合要求是不固定的啊!
      

  10.   

    不可能。你想想,你的数据长度不定,假如超过了4K,那SQL应该返回什么样的数据给你?
    你在钻牛角尖,另外想办法解决。是你的设计有问题。
      

  11.   

    数据长度根据自己的需要设置吧
    1.企业管理器—>用户定义的函数—>新建函数—>复制粘贴
    CREATE Function Result(@id nvarchar(30))
    returns varchar(400)
    as
    begin
    declare @str1 varchar(400)
    declare @str2 varchar(400)
    set @str2='|'
    set @str1=''
    select @str1=@str1 + IsNull(log,'') + @str2 from [t2] where id=@id
    return @str1
    end2.程序中调用
    select *,dbo.Result(id) as result from t1

    select *,dbo.Result(1) as result from t1 where id=1
      

  12.   

    to desrie(leir) 
       说得对!谢谢!
      

  13.   

    谢谢大家的帮忙,也许desrie说得对,我程序设计的有点问题,参数传递的有点问题,开始没有考虑到会遇到这种情况,不过已经解决了!结贴了,大家收分啊!