有如下的数据:
OrderNO
-------
A0001
A0001
A0001
B0001
B0001
...
其实我想的到的效果是:
pOrderNO=‘A0001,B0001’ 而不是 ‘A0001,A0001,A0001,B0001,B0001。’

解决方案 »

  1.   


    declare   @s   varchar(3000) 
    set   @s=''
    select   @s=@s+OrderNO+ ','   from 表 GROUP BY OrderNO
    SELECT   (left(@s,len(@s)-1)) 
      

  2.   

    这了不能group by,因为本身不想再建临时表,而且还有其他列数据必须显示
      

  3.   

    可能我说不清楚问题,希望能通过Delphi进行数据加工
    我之前的var 
    pOrderNo : String;
    with tbHear do begin
      pOrderNo='';  
      first;
      while not eof do
        begin
          pOrderNo := pOrederNo + ',' + FieldByName('OrderNo').AsString; 
      next;
        end;
    end;     就会重复,能不能帮我改进代码
      

  4.   

    var 
    pOrderNo : String;
    //tbHear应该是你的表吧,此处最好替换成查询
    //查询语句的sql语句是:select distinct orderNo,其他需要用到的字段 from 你的表 order by OrderNo
    //这样下面的语句不用改就行了
    with tbHear do begin
      pOrderNo='';  
      first;
      while not eof do
        begin
          pOrderNo := pOrederNo + ',' + FieldByName('OrderNo').AsString; 
      next;
        end;
    end;   
      

  5.   

    tbHeader已经是查询出来的数据了,所以不太方便用distinct在产生一个表
    这个虽然很多字段相同,但也有不同的字段,所以不是重复数据行啊。
    最好能用代码来处理就最好了。
      

  6.   

    with tbHear do begin
      pOrderNo='';  
      first;
      while not eof do
        begin
          //判断一下
          if (pos(pOrderNo,FieldByName('OrderNo').AsString)=0 then
          pOrderNo := pOrederNo + ',' + FieldByName('OrderNo').AsString; 
          next;
        end;
    end;   
      

  7.   

    你的查询tbHeader不能加入distinct限制吗?
      

  8.   

    7楼的方法是可以,但是如果能在tbHeader中加入distinct还是最好的
      

  9.   

    if (pos(pOrderNo,FieldByName('OrderNo').AsString)=0
    加了这个条件还是不行哦?
      

  10.   

    不行啊,这个查询有group by ,还有sum 而且,除了这个字段其他字段不重复啊。
      

  11.   

    写反了是判断FieldByName('OrderNo').AsString在字符串中是否存在
    if (pos(FieldByName('OrderNo').AsString,pOrderNo)=0 
      

  12.   

    他的条件写反了,应该是
    [code=Delphi(Pascal)]with tbHear do begin 
      pOrderNo='';  
      first; 
      while not eof do 
        begin 
          //判断一下 
          if (pos(trim(FieldByName('OrderNo').AsString),pOrderNo)=0 then 
          pOrderNo := pOrederNo + ',' + FieldByName('OrderNo').AsString; 
          next; 
        end; 
    end;  
      

  13.   


    with tbHear do begin 
      pOrderNo='';  
      first; 
      while not eof do 
        begin 
          //判断一下 
          if (pos(pOrderNo,FieldByName('OrderNo').AsString)=0 then 
          pOrderNo := pOrederNo + ',' + FieldByName('OrderNo').AsString; 
          next; 
        end; 
    end;  
      

  14.   

    我又写反了,这次对了with tbHear do begin 
      pOrderNo='';  
      first; 
      while not eof do 
        begin 
          //判断一下 
          if (pos(trim(FieldByName('OrderNo').AsString),pOrderNo)=0 then 
          pOrderNo := pOrederNo + ',' + FieldByName('OrderNo').AsString; 
          next; 
        end; 
    end;