我一般这样写,(笨方法,呵呵):adoqouery1.sql.clear; adoquery1.sql.add('select * from 你的表名'); adoquery1.open;while not adoquery1.eof do begin if adoquery1.fielfvalues['c1']=a then begin //里面写成你想要的语句 showmessage(adoquery1.fielfvalues['a1']); showmessage(adoquery1.fielfvalues['a2']); showmessage(adoquery1.fielfvalues['a3']); end else begin //里面写成你想要的语句 showmessage(adoquery1.fielfvalues['b1']); showmessage(adoquery1.fielfvalues['b2']); showmessage(adoquery1.fielfvalues['b3']); end; adoquery1.next; end; 不知道我这样理解你的问题,对不对,也没准我把你的问题理解错了。呵呵
@youlostme 可能是你理解错了我的问题我目前的解决方法如下: select case when c1='a' then a1 else b1 end, case when c1='a' then a2 else b2 end, case when c1='a' then a3 else b3 end from table但是觉得字段多了就很累赘,求简便方法
SQL語句寫成如下可以解決 select a1 as D1,a2 as D2,a3 as D3 from TabelA where c1='a' union select b1 as D1,b2 as D2,b3 as D3 from TabelA where c1='b'
@ Oraclers不错,要的就是这个,一开始就想用union的,呵呵。
这样呢? case when c1='a' then begin a1; a2; a3; end else begin b1; b2; b3; end;
then rtrim(a1)+','+rtrim(a2)+','+rtrim(a3)
else rtrim(b1)+','+rtrim(b2)+','+rtrim(b3)
end 返回的字段,自己再解析一下
肯定会报错的,因为语句不完整。你用的ado读取数据库吗?
我需要完整的原始字段输出
adoquery1.sql.add('select * from 你的表名');
adoquery1.open;while not adoquery1.eof do
begin
if adoquery1.fielfvalues['c1']=a then
begin //里面写成你想要的语句
showmessage(adoquery1.fielfvalues['a1']);
showmessage(adoquery1.fielfvalues['a2']);
showmessage(adoquery1.fielfvalues['a3']);
end
else begin //里面写成你想要的语句
showmessage(adoquery1.fielfvalues['b1']);
showmessage(adoquery1.fielfvalues['b2']);
showmessage(adoquery1.fielfvalues['b3']);
end;
adoquery1.next;
end;
不知道我这样理解你的问题,对不对,也没准我把你的问题理解错了。呵呵
是啊,我说了语句不完整吗。我把你说的a1理解成一条语句了。多条语句执行,要加 begin..end呀。
select case when c1='a' then a1 else b1 end,
case when c1='a' then a2 else b2 end,
case when c1='a' then a3 else b3 end
from table但是觉得字段多了就很累赘,求简便方法
select a1 as D1,a2 as D2,a3 as D3
from TabelA
where c1='a'
union
select b1 as D1,b2 as D2,b3 as D3
from TabelA
where c1='b'
case when c1='a' then
begin
a1;
a2;
a3;
end
else begin
b1;
b2;
b3;
end;