求一条SQL语句(100)

  • 主题发起人 主题发起人 lifndcw
  • 开始时间 开始时间
L

lifndcw

Unregistered / Unconfirmed
GUEST, unregistred user!
ddd表如下品名 只数 重量 单价 计价类别aa 11 11 0.11 只数bb 11 11 0.11 重量cc 11 11 0.11 重量请问如何根据以下的条件,查询出数据当计价类别='只数' 重量>10当计价类别='重量' 只数>10最好能用一条select 实现
 
where (计价类别='只数' and 重量>10 ) or (计价类别='重量' and 只数>10 )
 
select * from ddd where 计算类别 = '只数' and 重量 > 10 unionselect * from ddd where 计算类别 = '重量' and 只数 > 10
 
我的意思是当计价类别='只数' 时,只执行' 重量>10'当计价类别='重量' 时,只执行' 只数>10'根据计价类别来执行相应的过滤条件。
 
就是说你的查询条件只有《计价类别》,根据输入的计价类别,查询符合条件的数据?sql:= format('Select * from ddd '+ 'where (Case when '%s'='只数' then 重量 else 只数 end) > 10 ', [计价类别变量]);sql:= format('Select * from ddd '+ 'where ( '%s' ='只数' and 重量>10 ) '+ ' or ( '%s' ='重量' and 只数>10 ) ', [计价类别变量,计价类别变量]);access不支持Case when,但可以用 iif('%s'='只数',重量,只数) > 10 来处理。
 
declare @a table(品名 varchar(10),只数 int,重量 int,单价 money,计价类别 varchar(10))insert @a values('aa',11,11,0.11,'只数')insert @a values('bb',11,11,0.11,'重量')insert @a values('cc',11,11,0.11,'重量')select * from @aselect a.*from @a a,(select (case when count(*)>0 then '只数' else '重量' end) lb from @a where 计价类别='只数') as bwhere a.计价类别=b.lb and 只数>10 and 重量>10
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
765
SUNSTONE的Delphi笔记
S
后退
顶部