根据 一定条件 条件查询后,得到一些数据,然后根据 下面三个字段进一步筛选
中文描述 字段名 数据类型
供货状态 state int
供货价格 price varchar
供货商标识 info int 比较state的大小 要 state 最大的数据, 如果最后state最大的数据有多条相同的(就是state的值相同),
再根据价格(最小)筛选 如果最后最小价格有多条相同数据(price的值相同),再根据供货商标识(最小)筛选 依次如此筛选!!!请问怎麽做??
用程序逻辑+sql语句实现
中文描述 字段名 数据类型
供货状态 state int
供货价格 price varchar
供货商标识 info int 比较state的大小 要 state 最大的数据, 如果最后state最大的数据有多条相同的(就是state的值相同),
再根据价格(最小)筛选 如果最后最小价格有多条相同数据(price的值相同),再根据供货商标识(最小)筛选 依次如此筛选!!!请问怎麽做??
用程序逻辑+sql语句实现
解决方案 »
- 关于C#操作excel的问题
- DataGridView怎么添加一行checkbox?
- 购物车显示不出商品,纠结一年了[加分重发]
- 加载mxd 报异常System.Windows.Forms.AxHost+InvalidActiveXStateException
- .NET Compact Framework 怎么抗锯齿?
- 急急急急急急急急急急急急急急急急急急,关于使用AxWebBrowser时碰到的Cookie的问题
- 微软试题
- 请教一下会的朋友
- dispose()的问题
- 无法修改Control类型的属性的编辑器UITypeEditor
- c#:大家帮忙解决下这个问题吧,烦死了!
- 去掉字符串最后一个空格的问题
大致是依次保存where条件
如第一次where是 XXXXX,那么sql就是 select * from table where XXXXX
第二次的where是 yyyyy,那么sql就是 select * from table where (XXXXX) and (yyyyy)
第三次的where是 zzzzz,那么sql就是 select * from table where (XXXXX) and (yyyyy) and (zzzzz)
依次类推!!
这里xxxxx,yyyyy,zzzzz可能是非常复杂的语句!!!
state从大到小 再price从小大大
还有一种思路,用Max、Min结合Count
价格Price的数据类型怎么是Varchar,如果你设置成这种类型了后面要做很多无用功!(至少你比较大小的时候得转化它的数据类型)建议转换成Decimal类型的数据,price字段
--获取state最大值
declare @stateMax integer
set @stateMax=(select MAX(state) from XXX where 1=1)--在price数据类型为decimal情况下
declare @priceMin decimal
set @priceMin= ( select MIN(price)
from XXX
where XXX.[State]=
(select MAX(state) from XXX where 1=1) )
--寻找最低的info
declare @infoMin integer
set @infoMin=(select MIN(info)
from XXX
where priceMin=( select MIN(price)
from XXX
where XXX.[State]=
(select MAX(state) from XXX where 1=1) )
)
--result
select *
from (select *
from XXX
where priceMin=( select MIN(price)
from XXX
where XXX.[State]=
(select MAX(state) from XXX where 1=1) )
)
where info=@infoMin
依次嵌套吧!希望这段代码是对的,嗬嗬嗬……很久没像这样写过SQL了!