有如下的数据:
OrderNO
-------
A0001
A0001
A0001
B0001
B0001
...
其实我想的到的效果是:
pOrderNO=‘A0001,B0001’ 而不是 ‘A0001,A0001,A0001,B0001,B0001。’
OrderNO
-------
A0001
A0001
A0001
B0001
B0001
...
其实我想的到的效果是:
pOrderNO=‘A0001,B0001’ 而不是 ‘A0001,A0001,A0001,B0001,B0001。’
declare @s varchar(3000)
set @s=''
select @s=@s+OrderNO+ ',' from 表 GROUP BY OrderNO
SELECT (left(@s,len(@s)-1))
我之前的var
pOrderNo : String;
with tbHear do begin
pOrderNo='';
first;
while not eof do
begin
pOrderNo := pOrederNo + ',' + FieldByName('OrderNo').AsString;
next;
end;
end; 就会重复,能不能帮我改进代码
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;
这个虽然很多字段相同,但也有不同的字段,所以不是重复数据行啊。
最好能用代码来处理就最好了。
pOrderNo='';
first;
while not eof do
begin
//判断一下
if (pos(pOrderNo,FieldByName('OrderNo').AsString)=0 then
pOrderNo := pOrederNo + ',' + FieldByName('OrderNo').AsString;
next;
end;
end;
加了这个条件还是不行哦?
if (pos(FieldByName('OrderNo').AsString,pOrderNo)=0
[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;
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;
pOrderNo='';
first;
while not eof do
begin
//判断一下
if (pos(trim(FieldByName('OrderNo').AsString),pOrderNo)=0 then
pOrderNo := pOrederNo + ',' + FieldByName('OrderNo').AsString;
next;
end;
end;