SQL能行吗?请帮我出个主意,我急死了。见者有分(100分)

  • 主题发起人 主题发起人 周晓晖
  • 开始时间 开始时间

周晓晖

Unregistered / Unconfirmed
GUEST, unregistred user!
我用DBGRID+QUERY查询,但结果集中有两个字段是通过条件判断的
比如:IF A THEN 字段1=表1的字段1 字段2=表1的字段2
IF B THEN 字段1=表1的字段2 字段2=表1的字段1
判断条件也根据结果集中的字段判断。
请问各位打下,能用SQL语句实现吗?如不能,有什么好办法呢?
如能,怎样实现呐?
求求各位帮帮忙,我急死了!!!
 
写两条SQL语句,根据条件调不同的语句...
 
用case应该能实现,如:
select case when A THEN a.字段1
when b THEN a.字段2 end as 字段1,
case when A THEN a.字段2
when b THEN a.字段1 end as 字段2
from tab1 a where
 
判断条件也根据结果集中的字段判断???什么意思?

 
好象不行吧。
 
请各位打下再多多发表见解。
 
"判断条件也根据结果集中的字段判断",文字表达能力待提高.
SQL语句恐难实现,用Delphi的动态构造SQL语句.
分两步,
1.先得到A,B条件.
2.动态代换到变量,再构造SQL语句查询.
 
用储存过程。
 
同意VICTORTIM,对于复杂的查询,
有时非用存储过程不可。
 
要看你是什么数据库,如果是Ms sql&Sybase,Oracle是可行的。

Ms sql&Sybase: DSM2000的方法.

Oracle:

select decode(条件,A,表1的字段1,B,表1的字段2,表1的字段1) as 表1的字段1,
decode(条件,B,表1的字段1,A,表1的字段2,表1的字段1) as 表1的字段2
from table1
where ......
 
DSM2000的方法是可行的,
就是不明白“判断条件也根据结果集中的字段判断”是什么意思?
可以详细说明吗?
 
如果你的数据库不是上面的数据库。。。。来一个高难技巧的: :)))

select ((条件-B)*表1的字段1+(条件-A)*表1的字段2)/(2*条件-A-B) as 表1的字段1,
(条件-A)*表1的字段2+(条件-B)*表1的字段1/(2*条件-A-B) as 表1的字段2
from table1
where ...
 
这么复杂,还不如用两条语句算了
 
用储存过程。
 
我看了你的问题,无非是 字段1,与字段2的先后次序问题。
用动态Query就可以了。可以提供原代码。


 
先在建立DBGRID中建立两个静态的TCOLUMNS
IF A THEN column[0].fieldname=表1的字段1 column[1].fieldname=表1的字段2
IF B THEN column[0].fieldname=表1的字段2 column[1].fieldname=表1的字段1
以上只是我提供的思路。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部