日期:2014-05-17  浏览次数:20553 次

怎么写sql查询
好久好久没有碰电脑了……

一个库存表,设有最大库存值和最小库存值。要求找出高于最高库存或者低于最低库存的商品,并说明是高还是低。

表结构:
商品ID,最高库存,最低库存,当前库存
0001    500    200       10000
0002    400    100        2
0003    5000   100        452
……

要求结果:
商品ID,当前库存,  判断类型
0001    10000    高于最大库存
0012    2        低于最小库存
------最佳解决方案--------------------
赶紧结贴了,多给我点分,谢谢
------其他解决方案--------------------
null
------其他解决方案--------------------
SELECT  商品ID ,
         当前库存 ,
         '高于最大库存' 判断类型
 FROM    TB
 WHERE   EXISTS ( SELECT 1
                  FROM   TB b
                  WHERE  TB.当前库存 > b.最高库存
                         AND b.商品id = TB.商品id )
 UNION ALL 
 SELECT  商品ID ,
         当前库存 ,
         '低于最小库存' 判断类型
 FROM    TB
 WHERE   EXISTS ( SELECT 1
                  FROM   TB b
                  WHERE  TB.当前库存 < b.最高库存
                         AND b.商品id = TB.商品id )
                         
------其他解决方案--------------------

declare @T table 
(商品ID varchar(4),最高库存 int,最低库存 int,当前库存 int)
insert into @T
select '0001',500,200,10000 union all
select '0002',400,100,2 union all
select '0003',5000,100,452

select 
商品ID,当前库存,
判断类型='高于最大库存' 
from @T where 当前库存>最高库存 union all
select 
商品ID,当前库存,
判断类型='低于最小库存' 
from @T where 当前库存<最低库存
order by 商品ID

/*
商品ID 当前库存        判断类型
---- ----------- ------------
0001 10000       高于最大库存
0002 2           低于最小库存
*/

------其他解决方案--------------------

--创建数据开始
if(object_id('a')is not null) drop table a
go